CF2139B
Problem
给你 $n$ 个烤箱,每个烤箱每秒会增加 $a_i$ 个蛋糕,你要在前 $m$ 秒里每秒拿走一个烤箱的蛋糕,求最多能拿走多少。
Solution
对于每个烤箱,在第 $k$ 秒可以有 $k\times a_i$ 个,会浪费 $(m-k)\times a_i$,明显每个烤箱去一次就够了。
要想拿到的最多,很明显可以贪心考虑。时间越靠后就去拿更大的,这样浪费的更少。
Code
#include<bits/stdc++.h>
using namespace std;
using LL=long long;
LL n,a[200005],m;
void solve(){
LL ans=0;
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
for(int i=n;i>=1&&m;i--){
ans+=a[i]*m;
//cout<<ans<<' ';
m--;
}
cout<<ans<<"\n";
}
int main(){
int t;
cin>>t;
while(t--) solve();
return 0;
}