蒟蒻完全不会,才10分,大佬帮看看哪儿错了

P1190 [NOIP2010 普及组] 接水问题

```c++ #include <bits/stdc++.h>//我们可以用一个循环模拟m个水龙头一秒的接水量 using namespace std; int s[10005],ans;//根据t的终止条件来想下s的大小 int main() { int n,m;cin>>n>>m; for(int i=1;i<=n;i++) { cin>>s[i];//输入每个学生的接水量 } int t=m+1;//t用来记录下个学生的编号 while(t<=n+m)//终止条件(因为一开始m个学生在接下一个学生就是m+1) { for(int i=1;i<=m;i++)//枚举m个水龙头 { s[i]--; if(s[i]==0) { s[i]=s[t];//如果这个学生的水接完了 模拟换下一个学生来这个水龙头 t++; } } ans++;//以上是模拟的1秒钟的接水时间 所有ans加一 } cout<<ans; return 0; }
by CCK_demon @ 2022-09-24 21:29:56


队列正好可以处理这个问题 ```cpp #include<iostream> #include<ctype.h> #include<math.h> #include<string.h> #include<algorithm> #include<iomanip> #include<stack> #include<queue> #include<deque> #include<vector> #include<map> #include<set> using namespace std; queue <int> q; const int N=1e5+10; int v[N]; int main(){ int n,m,time=0; cin>>n>>m; for(int i=1;i<=n;i++){ int x; cin>>x; q.push(x); } for(int i=0;i<m;i++){ v[i]=q.front(); q.pop(); } while(true){ for(int i=0;i<m;i++){ if(v[i]>0) v[i]--; if(v[i]==0 && q.size()>0){ v[i]=q.front(); q.pop(); } } time++; bool t=true; for(int i=0;i<m;i++){ if(v[i]!=0) t=false; } if(t) break; } cout<<time<<endl; return 0; } ```
by X_ray_Of_the_way @ 2022-10-09 09:53:34


````cpp #include <bits/stdc++.h>//我们可以用一个循环模拟东方古典风m个水龙头一秒的接水量 using namespace std; int s[10005],ans的风格发的;//根据t的终止条件来想下s的大小 int main() { int n,m;cin>>n>>m; for(int i=1;i<=的风格n;i++) { cin>>s[i];//输得到的点点滴滴入每个学生的接水量 } int t=m+1;//t用来记录下个学生的编号 while(t<=n+m)//终止条件(因为一开始m个学生在接下一个学生就是m+1) { for(int i=1;i<=m;i++)//枚举m个水龙头 { s[i]--; if(s[i]==0) { s[i]=s[t];//如果这个学生的水接完了 模拟换下一个学生来这个水龙头 t++; } } ans++;//以上是模拟的1秒钟的接水时间 所有ans加大的点点滴滴风蛋糕一 } cout<<ans; return 0; } ` ```
by _Elliy_ @ 2023-01-14 23:11:55


|