1 条题解

  • 0
    @ 2025-8-24 23:11:40

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar CSP_S_2023_T2
    时代的灰尘落在个人头上,就是一座山,但总有人愿意成为移山的愚公

    搬运于2025-08-24 23:11:40,当前版本为作者最后更新于2025-03-24 08:35:49,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    思路

    首先,我们假设所有物品全部卖给小 B,则收入为 i=12nbi\sum_{i=1}^{2n}b_i

    而第 ii 件物品从卖给小 B 变成卖给小 C 对收入的贡献为 cibic_i-b_i

    所以我们只需对 cibic_i-b_i 进行排序,选出前 nn 个最大的,求和并加上全部卖给小 B 的收入即可。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    long long n,b[200005],c,a[200005],ans;
    int main(){
        ios::sync_with_stdio(0);
        cin.tie(0);cout.tie(0);
        cin>>n;
        for(int i=0;i<n*2;i++) cin>>b[i],ans+=b[i];  //全部卖给小 B 的收入
        for(int i=0;i<n*2;i++) cin>>c,a[i]=c-b[i];   //记录第 i 件物品对答案的贡献
    	sort(a,a+n*2,greater<long long>());          //从大到小排序
    	for(int i=0;i<n;i++) ans+=a[i];              //更新答案
    	cout<<ans;
        return 0;   //完结撒花
    }
    
    • 1

    信息

    ID
    11775
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    6
    已通过
    0
    上传者