题解 | #装进肚子#

装进肚子

https://ac.nowcoder.com/acm/problem/14721

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

解题思路

利用结构体分别存储早上和晚上的甜蜜值
先假设晚上把巧克力全部吃完,
然后将早上甜蜜值减去晚上甜蜜值,从大到小排序,看哪个差值更大,说明早上吃更划算
最后根据排序替换掉前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;
}

全部评论

相关推荐

面试了几家,全程问项目,八股一点都不问,可惜准备了这么久
独角仙梦境:现在感觉问八股像是中场休息一样的,问几个八股放松一下再上强度
点赞 评论 收藏
分享
qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

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