- 总括
- 一、玩具谜题
- 二、神奇的幻方
- 三、蚯蚓
- 四、列队
总括 题数:4。 得分:285/400 时间:4h 一、玩具谜题
算法:大模拟(水题)
得分:100
代码:
#includeusing namespace std; struct node { int head; string name; }a[100007]; int main(){ int m,n; cin>>n>>m; for(int i=0;i >a[i].head>>a[i].name; } int ans=0,x,y; for(int i=1;i<=m;i++) { cin>>x>>y; if(a[ans].head==0&&x==0)ans=(ans+n-y)%n; else if(a[ans].head==0&&x==1)ans=(ans+y)%n; else if(a[ans].head==1&&x==0)ans=(ans+y)%n; else if(a[ans].head==1&&x==1)ans=(ans+n-y)%n; } cout< 二、神奇的幻方 算法:暴力枚举,模拟(水题)
得分:100
代码:#includeusing namespace std; struct node{ int x; int y; }a[1600]; int b[45][45]; int n; int main(){ cin>>n; memset(b,0,sizeof(b)); a[1].x=n/2+1; a[1].y=1; b[1][n/2+1]=1; for(int i=2;i<=n*n;i++){ int tx=a[i-1].x,ty=a[i-1].y; if(ty==1&&tx!=n){ a[i].x=tx+1; a[i].y=n; b[a[i].y][a[i].x]=i; continue; } if(ty!=1&&tx==n){ a[i].x=1; a[i].y=ty-1; b[a[i].y][a[i].x]=i; continue; } if(ty!=1&&tx!=n){ if(b[ty-1][tx+1]==0){ a[i].x=tx+1; a[i].y=ty-1; } else{ a[i].x=tx; a[i].y=ty+1; } b[a[i].y][a[i].x]=i; continue; } if(ty==1&&tx==n){ a[i].x=tx; a[i].y=ty+1; b[a[i].y][a[i].x]=i; continue; } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cout< 三、蚯蚓 算法:二叉堆,模拟
得分:85(TLE三个点)
代码:#includeusing namespace std; priority_queue w; long long n,m,q,u,v,t; long long a[100010]; double p; int main(){ cin>>n>>m>>q>>u>>v>>t; p=double(u)/double(v); for(int i=1;i<=n;i++){ cin>>a[i]; w.push(a[i]); } for(int i=1;i<=m;i++){ long long temp=w.top(),x1,x2; w.pop(); temp+=(i-1)*q; if(i%t==0) cout< 四、列队 算法:平衡树,线段树,树状数组
得分:竟然爆零了!!!
反思:当时很快写出前三题,最后一题不顾一切想正解,没有暴力骗分,最后“听取WA声一片”。正规比赛不要这么浪!!!



