2010J_2:接水问题

洛谷: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;
	} 
Scroll to Top