题解:B4104 [CSP-X2024 山东] 购物
B4104 [CSP-X2024 山东] 购物 题解
题意
题意很明确,就不过多赘述了。
Solution
首先需要发现优惠券可转化为
实现就是先降序排列(大的尽量多用优惠劵),然后遍历序列,
记得开 long long。
Code
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,m,w,cnt,ans;
int a[200010];
signed main(){
cin>>n>>m>>w;
for(int i=1;i<=n;++i)
cin>>a[i];
sort(a+1,a+1+n,greater<int>());//从大到小排序
for(int i=1;i<=n;++i){
cnt+=a[i];
if(i%m==0){
if(cnt>w) ans+=w;
else ans+=cnt;
cnt=0;
}
}
if(cnt>w) ans+=w;
else ans+=cnt;
cout<<ans;
return 0;
}