442. 排队接水
作者:
jy9
,
2024-06-08 11:28:42
,
所有人可见
,
阅读 2
用小跟堆的做法
#include <iostream>
#include <queue>
using namespace std;
#define int long long
signed main(){
int n, m;
//priority_queue<int> q;
//使用大根堆,让最小的在最上面
priority_queue<int, vector<int>, greater<int>> q; //https://www.acwing.com/file_system/file/content/whole/index/content/3598249/
cin >> n >> m;
for (int i = 0; i < m; i ++ )q.push(0);
while (n -- ){
int w;
cin >> w;
int tmp = q.top()+w; //接完w这个人之后的总用水量
q.pop();
q.push(tmp); //弹出再安回来,更新数据
}
for (int i = 0; i < m-1; i ++ )q.pop(); // 将最大的留下来,其他小的弹出去
cout << q.top();
return 0;
}