题解:CF2139B Cake Collection

好久没有写题解了。

从烤箱中收集到的蛋糕数量取决于最后一次访问烤箱的时间。

最优策略是在 min(n,m)\min(n,m) 秒内访问不同的烤箱。

假设顺序为 p1,p2,p3,p_1,p_2,p_3,\dots,那么在第 ii 秒时,可以收集 api×max(0,mi+1)a_{p_i}\times \max(0,m-i+1) 个蛋糕。

为了使总和最大,应当将 aa 从大到小排序。

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;
#define int long long
int n,a[100005],m,ans;
void solve(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1,greater<int>());
for(int i=1;i<=n;i++)ans+=a[i]*max(m-i+1,0ll);
cout<<ans<<"\n";
ans=0;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--)solve();
return 0;
}


题解:CF2139B Cake Collection
http://zhoujunchen666.github.io/2025/10/29/题解:CF2139B-Cake-Collection/
作者
zhoujunchen
发布于
2025年10月29日
许可协议