看到楼下的大佬们发了一些排序、堆的题解,我看不懂堆的题解啊
于是我想到了另外一种方法:
读入n;
再读入n个整数(每个人的接水量);
然后,直接模拟!
首先,前m个人占领了所有水龙头;
然后,循环,接水量-1,时间+1;
如果有人接完了,下一个人开始。
AC代码(cpp):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <bits/stdc++.h> using namespace std; int n,m,w[10005],t,p; int main(){ ios::sync_with_stdio(false); cin>>n>>m; for(int i=0;i<n;i++)cin>>w[i]; p=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; } 你要抄就抄吧,反正洛谷的黑科技能查出来。
|