第一次写的时候没看懂题目,为啥早上吃第一个加3甜蜜度,原来第二行是从第1个到第n个巧克力早上吃对应的甜蜜值,第三行都是晚上吃对应的甜蜜值,看不懂的我直接打go去了呵呵
#include <iostream> #include <algorithm> using namespace std; typedef long long ll; struct suger{ ll a; //早上吃得到的甜蜜值 ll b; //晚上吃得到的甜蜜值 }su[100005]; bool cmp(suger a,suger b){ return a.a-a.b>b.a-b.b; } void solve(){ ll n,k; //早上吃k个,晚上吃n-k个 cin>>n>>k; for(int i=1;i<=n;i++) cin>>su[i].a;//输入第i个巧克力早上吃得到的甜蜜值 for(int i=1;i<=n;i++) cin>>su[i].b;//输入第i个巧克力晚上吃得到的甜蜜值 sort(su+1,su+n+1,cmp);//按早上吃得到的甜蜜值减去晚上吃得到的甜蜜值从大到小排序 ll ans=0; for(ll i=1;i<=k;i++) ans+=su[i].a; for(ll i=k+1;i<=n;i++) ans+=su[i].b; cout<<ans<<endl; } int main() { ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); int t=1;//cin>>t while(t--) solve(); return 0; }