洛谷:P1190
OJ:P1460
直接模拟接水过程即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <iostream> using namespace std; int s[11000],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用来记录下个等待学生的编号 ,开始是m个同学接水, //n + m 确保所有学生都能完成接水:循环需要运行到最后一个学生(第 n 个学生)接完水, //这最多可能需要 m 次迭代(每个水龙头可能再为一个新学生服务)。 while(t<=n+m){ 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; } |