不得不感谢一下题解区两位大佬(锐克没有电和枫木流云)的做法,很巧妙!!!!大佬在上请受小弟一拜!!!
所以我的解法就是把两个人的解法结合了起来,虽然没有大佬那么牛,但还是想发一篇题解记录一下!!!

解题思路

利用结构体分别存储早上和晚上的甜蜜值
先假设晚上把巧克力全部吃完,
然后将早上甜蜜值减去晚上甜蜜值,从大到小排序,看哪个差值更大,说明早上吃更划算
最后根据排序替换掉前k个本应该在早上吃的

代码

#include<bits/stdc++.h>
using namespace std;
struct ren
{
    long long int x;        //存早上甜蜜值
    long long int y;        //存晚上
}a[100010];
bool cmp(ren xx,ren yy)
{
    return xx.x-xx.y>yy.x-yy.y;      //早上与晚上甜蜜值差值的排序
}
int main()
{
    long long int n,k,i,su=0;
    cin>>n>>k;
    for(i=0;i<n;i++)cin>>a[i].x;
    for(i=0;i<n;i++){cin>>a[i].y;su+=a[i].y;}
    sort(a,a+n,cmp);
    for(i=0;i<k;i++)su+=(a[i].x-a[i].y);      //替换,因为su已经包含了晚上全部的,再加上差值就是早上的甜蜜值
    cout<<su;
}