题解 P1190 【接水问题】
引领天下
2017-05-18 18:18:38
给出一个纯模拟的做法。
首先,读入 $n$;
再读入 $n$ 个整数(每个人的接水量);
然后,直接模拟!
首先,前 $m$ 个人占领了所有水龙头;
然后,循环,接水量 $-1$,时间 $+1$;
如果有人接完了,下一个人开始。
AC 代码:
```cpp
#include <bits/stdc++.h>//万能头文件
using namespace std;
int n,m,w[10005],t,p;//n、m不解释,w数组是接水量
int main(){
ios::sync_with_stdio(false);//毫无意义的流优化
cin>>n>>m;//读入
for(int i=0;i<n;i++)cin>>w[i];//读入
p=m;//前m个人接水
while(p<=n){
for(int i=0;i<m;i++){
w[i]--;//接了一滴(什么水龙头)
if(!w[i])w[i]=w[p++];//没了,下一个!
}
t++;//时间++
}
for(int i=1;i<m;i++)if(w[i]>w[0])w[0]=w[i];//找剩下的最大值
cout<<t+w[0];//输出时间和没接完的水要的时间
return 0;//庄严地结束程序
}
```