题解|装进肚子

由于题目链接无法解析,我直接截图展示这个题目要求找到最大甜蜜值的思路其实也很简单。

我们可以先假设所有的巧克力都应该在晚上吃,然后再挑出 k 个巧克力转为早上吃。

那么我们只需要计算出这 n 个巧克力在分别早晚的甜蜜值差值 A[i]-B[i],并进行排序,差值最大的 k 个巧克力在早上吃,代表着这 k 个巧克力可以提供更多的甜蜜值增益。

#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<deque>
#include<cmath>
using namespace std;
const int N=100005;

int main(){
    int n=0,k=0;
    cin>>n>>k;
    int A[N],B[N];
    for(int i=0;i<n;i++) cin>>A[i];
    for(int i=0;i<n;i++) cin>>B[i];
    vector<int> ve;
    long long sum=0;
    
    for(int i=0;i<n;i++){
        ve.push_back(A[i]-B[i]);	//计算早晚甜蜜值差值
        sum+=B[i];		//同时对B值进行累加
    }
    
    sort(ve.begin(),ve.end(),greater<int>());	//用sort函数进行降序排序
    for(int i=0;i<k;i++) sum+=ve[i];		//差值最大的k个再累加到sum上
    
    cout<<sum;
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务