- 1.玩具谜题(toy)
- 2.神奇的幻方(magic)
- 3.蚯蚓(earthworm)
- 4.列队(phalanx)
1.玩具谜题(toy)
洛谷P1563
算法:模拟
无其他算法(水题 )
我的代码
#includeusing namespace std; struct node{ string name; int direct; }stu[100005]; int main(){ string answer; int z,people,dangqian=1; int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>stu[i].direct; cin>>stu[i].name; } for(int i=1;i<=m;i++){ cin>>z>>people; if(z==0){ if(stu[dangqian].direct==0) if(dangqian-people<0) dangqian=n+dangqian-people; else dangqian-=people; else if(dangqian+people>n) dangqian=people+dangqian-n; else dangqian=dangqian+people; } if(z==1){ if(stu[dangqian].direct==0) if(dangqian+people>n) dangqian=people+dangqian-n; else dangqian=dangqian+people; else if(dangqian-people<0) dangqian=n+dangqian-people; else dangqian-=people; } } for(int i=0;i 估分:100
实际得分:95
(为什么会这样,无论刷水题也好,还是暴力模拟,双份的快乐为什么会变成这样呢)言归正传,零不在范围内(
我是“sb”)
应该是i f ( d a n g q i a n − p e o p l e < = 0 ) if(dangqian-people<=0) if(dangqian−people<=0)
改了之后轻松A了。
2.神奇的幻方(magic)洛谷P2615
算法:
又是快乐模拟我的代码
#includeusing namespace std; short a[50][50]; int main(){ int n,o=1; cin>>n; int hang=1,lie=n/2+1; a[hang][lie]=1; while(o<=n*n){ o++; int h1=hang,l1=lie; if(h1==1&&l1!=n){ hang=n; lie+=1; a[hang][lie]=o; } if(l1==n&&h1!=1){ lie=1; hang-=1; a[hang][lie]=o; } if(h1==1&&l1==n){ hang+=1; a[hang][lie]=o; } if(h1!=1&&l1!=n){ if(a[h1-1][l1+1]==0){ hang-=1; lie+=1; a[hang][lie]=o; } else{ hang+=1; a[hang][lie]=o; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cout< 估分:100
3.蚯蚓(earthworm)
实际得分:100洛谷P2827
我的代码
算法:STL(优先队列)
#includeusing namespace std; typedef long long ll; queue a;queue b;queue c; bool cmp(ll x,ll y){return x>y;} int main() { ll n,m,q,u,v,t,x,y; scanf("%lld%lld%lld%lld%lld%lld",&n,&m,&q,&u,&v,&t); ll ne[100005]; for(ll i=1;i<=n;i++) { scanf("%lld",&ne[i]); } sort(ne+1,ne+n+1,cmp); for(ll i=1;i<=n;i++) a.push(ne[i]); for(int i=1;i<=m;i++){ ll maxn=-2147483647,f; if(!a.empty())if(a.front()>maxn)maxn=a.front(),f=1; if(!b.empty())if(b.front()>maxn)maxn=b.front(),f=2; if(!c.empty())if(c.front()>maxn)maxn=c.front(),f=3; if(f==1)a.pop();else if(f==2)b.pop();else if(f==3)c.pop(); maxn+=(i-1)*q;x=maxn*u/v;y=maxn-x; if(!(i%t))cout< maxn)maxn=a.front(),f=1; if(!b.empty())if(b.front()>maxn)maxn=b.front(),f=2; if(!c.empty())if(c.front()>maxn)maxn=c.front(),f=3; if(f==1)a.pop();if(f==2)b.pop();if(f==3)c.pop(); if(p%t==0) cout< 估分:50(
快乐骗分)(vector必超时)
实际得分:45贴个正解
#includeusing namespace std; typedef long long ll; queue a;queue b;queue c; bool cmp(ll x,ll y){return x>y;} int main() { ll n,m,q,u,v,t,x,y; scanf("%lld%lld%lld%lld%lld%lld",&n,&m,&q,&u,&v,&t); ll ne[100005]; for(ll i=1;i<=n;i++) { scanf("%lld",&ne[i]); } sort(ne+1,ne+n+1,cmp); for(ll i=1;i<=n;i++) a.push(ne[i]); for(int i=1;i<=m;i++){ ll maxn=-2147483647,f; if(!a.empty())if(a.front()>maxn)maxn=a.front(),f=1; if(!b.empty())if(b.front()>maxn)maxn=b.front(),f=2; if(!c.empty())if(c.front()>maxn)maxn=c.front(),f=3; if(f==1)a.pop();else if(f==2)b.pop();else if(f==3)c.pop(); maxn+=(i-1)*q;x=maxn*u/v;y=maxn-x; if(!(i%t))cout< maxn)maxn=a.front(),f=1; if(!b.empty())if(b.front()>maxn)maxn=b.front(),f=2; if(!c.empty())if(c.front()>maxn)maxn=c.front(),f=3; if(f==1)a.pop();if(f==2)b.pop();if(f==3)c.pop(); if(p%t==0) cout< 4.列队(phalanx) 洛谷P3690
不多说了,都是泪
放图
我的暴力太虚了估分:20~30
实际得分:0正解也不贴了(
摆烂了,兄弟们)



