题解 P1190 【接水问题】

引领天下

2017-05-18 18:18:38

Solution

给出一个纯模拟的做法。 首先,读入 $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;//庄严地结束程序 } ```