传送门
本题考虑贪心,首先将元素从大到小排序,我们要将这些元素分成
k
+
1
k+1
k+1组,使得总贡献最大,那么我们每次将当前元素加入和最大的一组即可。这样贪心显然是最优的。
priority_queue<ll,vector<ll>,less<ll> >q;
int a[maxn];
int main(){
int n=rd(),k=rd();
FOR(i,0,k+1)q.push(0);
ll ans=0;
FOR(i,0,n)a[i]=rd();
sort(a,a+n);
ROF(i,n-1,0){
int u=a[i];
ll v=q.top();q.pop();
ans+=v;
q.push(v+u);
}
printf("%lld\n",ans);
}