求助三队列做法70wa

P2827 [NOIP2016 提高组] 蚯蚓

@[REAL_曼巴](/user/371927) 你这玩意怎么样例都过不去
by FFTotoro @ 2023-08-12 16:29:28


@[zyc212303](/user/556366) 555 那所以哪里错了/kk
by REAL_曼巴 @ 2023-08-12 16:36:00


@[REAL_曼巴](/user/371927) 找到问题了: 代码: ```cpp #include <bits/stdc++.h> #define int long long using namespace std; const int maxn=7e6+7; int a[maxn]; signed main() { queue<int>q1,q2,q3; int n,m,q,u,v,t; double p=(double)u/v; cin>>n>>m>>q>>u>>v>>t; for(int i=1;i<=n;++i){ cin>>a[i]; } sort(a+1,a+n+1); for(int i=n;i>=1;--i){ q1.push(a[i]); } int w=0,tp=0; for(int i=1;i<=m;++i){ int maxn=-2147483647,cnt=0,f=0; if(!q1.empty() && maxn<=q1.front())maxn=max(maxn,q1.front()),f=1; if(!q2.empty() && maxn<=q2.front())maxn=max(maxn,q2.front()),f=2; if(!q3.empty() && maxn<=q3.front())maxn=max(maxn,q3.front()),f=3; if(f==1)q1.pop(); else if(f==2)q2.pop(); else if(f==3)q3.pop(); tp=maxn+w,w+=q; int d1=tp*u/v-w,d2=tp-d1-2*w; q2.push(d1),q3.push(d2); if(!(i%t))printf("%lld ",tp); } puts(""); int k=0; while(!q1.empty()||!q2.empty()||!q3.empty()){ int maxn=-2147483647,cnt=0,f=0; if(!q1.empty() && maxn<=q1.front())maxn=max(maxn,q1.front()),f=1; if(!q2.empty() && maxn<=q2.front())maxn=max(maxn,q2.front()),f=2; if(!q3.empty() && maxn<=q3.front())maxn=max(maxn,q3.front()),f=3; if(f==1)q1.pop(); else if(f==2)q2.pop(); else if(f==3)q3.pop(); if(!((++k)%t))printf("%lld ",maxn+w); } return 0; } ```
by FFTotoro @ 2023-08-12 16:37:51


@[zyc212303](/user/556366) 啊?所以怎么了
by REAL_曼巴 @ 2023-08-12 16:40:13


@[REAL_曼巴](/user/371927) 改了几个地方,一个是不用那个变量 $p$(有误差),还有一个就是 `<` 改成 `<=`。
by FFTotoro @ 2023-08-12 16:40:18


@[zyc212303](/user/556366) 谢谢您 关注了
by REAL_曼巴 @ 2023-08-12 16:41:28


|