题目
题解
贪心。太经典了。
用时短的先打水,从小到大排序,依次放在每个水龙头上,放完m个再接着顺次放在每个水龙头上,这样每个水龙头前的人数都差不多一样,最多差一个,计算每个水龙头上的等待时间,再累加。
这么经典,这么简单还写一遍是因为记得原来从一个大佬那里学到的非常简短的写这个题的方法,如下。
试了一下自己已经理解了,完全不是背过的,这个写起来真爽。
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3+10;
int n, m, sum, a[N];
int main() {
cin>>n>>m;
for(int i = 0;i < n;i ++) cin>>a[i];
sort(a, a+n);
for(int i = m;i < n;i ++) sum += a[i%m], a[i%m] += a[i];
cout << sum << endl;
}