2013 杭州赛区邀请赛
来源:互联网 发布:中兴笔试编程题 编辑:程序博客网 时间:2024/06/11 04:55
第一题:
hdu 4576 Robot
之前没有做,根本不敢想怎么去算,数太大了,其实算一算,还是可以的,时间是4s,1s 10^8,。 比赛时大家做主要卡在卡在开数组上,后来想到滚动数组,很轻易就A了。
没有任何技巧的题目,一步一步算,dp[0][i]表示当前落在i的概率,所以想用dp[1][i]存一下当前操作后落在i的概率,再传给dp[0][i],将dp[1][i]置为0,继续下一次操作。
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>using namespace std;double dp[2][210];int main(){ int n,m,l,r; int ll,rr; double sum; while(scanf("%d%d%d%d",&n,&m,&l,&r)) { if(n==0&&m==0&&l==0&&r==0) return 0; memset(dp,0,sizeof(dp)); dp[0][1]=1; int a; while(m--) { scanf("%d",&a); for(int i=1; i<=n; i++) { if(dp[0][i]==0) continue; /*ll=(i+n-a)%n; 这样写是3406ms rr=(i+n+a)%n; if(ll==0) ll=n; if(rr==0) rr=n;*/ ll=i-a; //这样写是2643ms while(ll<=0) ll+=n; rr=i+a; while(rr>n) rr-=n; dp[1][ll]+=(dp[0][i]/2); dp[1][rr]+=(dp[0][i]/2); } for(int i=1; i<=n; i++) { dp[0][i]=dp[1][i]; dp[1][i]=0; } } sum=0; for(int i=l; i<=r; i++) { sum+=dp[0][i]; } printf("%.4lf\n",sum); }}
第九题:
Hdu 4584
做题时说是最水的一道,的确,随便暴力一下就过了,顺序不用多考虑,因为找H是是按x小到大,然后y从小到大的,‘C'也是
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<cmath>#include<algorithm>using namespace std;char map[100][100];int main(){ int i1,j1,i2,j2; int x1,y1,x2,y2; int m,n; while(cin>>m>>n) { if(!m&&!n) break; for(int i=0; i<m; i++) cin>>map[i]; int d=1000; int ans; for(i1=0; i1<m; i1++){ for(j1=0; j1<n; j1++){ if(map[i1][j1]=='H'){ for(i2=0; i2<m; i2++){ for(j2=0;j2<n;j2++){ if(map[i2][j2]=='C'){ ans=abs(i1-i2)+abs(j1-j2); if(ans<d) { d=ans; x1=i1;y1=j1; x2=i2;y2=j2; } } } } } } } cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<endl; } return 0;}
第十题
hdu 4585
用到了set,临时看了别人的博客学习着写的。
lower_bound 函数返回大于等于这个数的元素下标。
set中元素是已经排好序的,所以插入、删除、查找等操作复杂度都为log(n);
#include<iostream>#include<cstdio>#include<string>#include<set>#include<map>using namespace std;int main(){ int n,k,g; set<int>st; map<int,int>mp; while(scanf("%d",&n)&&n) { st.clear(); mp.clear(); st.insert(1000000000); mp[1000000000]=1; while(n--) { scanf("%d%d",&k,&g); printf("%d ",k); set<int>::iterator it=st.lower_bound(g); if(it==st.end()) { it--; printf("%d\n",mp[(*it)]); } else { if(it!=st.begin()) { int tmp=*it; it--; if(tmp-g>=g-(*it)) printf("%d\n",mp[(*it)]); else printf("%d\n",mp[tmp]); } else printf("%d\n",mp[(*it)]); } st.insert(g); mp[g]=k; } } return 0;}
- 2013 杭州赛区邀请赛
- 2013ACM-ICPC杭州赛区全国邀请赛(题目重现)
- HDU4577(2013年ACM杭州赛区邀请赛B题)
- HDU 4578 Transformation(2013 杭州赛区全国邀请赛 1003)
- 2013ACM-ICPC杭州赛区全国邀请赛 ——Robot
- hdu4576 Robot 2013 ACM-ICPC杭州赛区全国邀请赛 1
- hdu 4578 Transformation 2013ACM-ICPC杭州赛区全国邀请赛
- 小记2013杭州邀请赛
- hdu 4576 robot 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现-1001-robot
- hdu 4585 Shaolin 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
- 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
- 2013ACM-ICPC杭州赛区全国邀请赛——X-Boxes
- 2013ACM-ICPC杭州赛区全国邀请赛——Random Walk
- hdu 4585 Shaolin 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
- hdu4577 X-Boxes ACM-ICPC杭州赛区全国邀请赛 2
- hdu4584 (2013杭州邀请赛)
- hdu4858 (2013杭州邀请赛)
- HDOJ 4578 && 2013杭州邀请赛
- fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined a
- 异步编程设计模式
- dp+计数 poj-1037-A decorative fence
- 求质量分布均匀的n边形的重心
- 让AngelScript运行起来
- 2013 杭州赛区邀请赛
- 链表的头指针在函数里修改怎么没有用?
- processmaker如何将Process无须登录的Web Entry改为必须登录并与CAS集成做单点的Web App
- CSS实例(八):不用图片实现宽度、高度自定的圆角矩形
- APP STORE 付费验证(IAP)服务端验证全过程
- HDU1978How Many Ways 记忆化dfs+dp
- [企业开源系列]后起之秀Facebook凭什么挑战互联网霸主Google?
- [C语言]菜鸟一些理解—变量常量
- 3.5 字符串操作