Problem Link

现在有 \(X+Y+Z\) 个人,第 \(i\) 个人有三个权值 \(a_i,b_i,c_i\),现在要求依次选出 \(X\) 个人,\(Y\) 个人和 \(Z\) 个人(一个人只能选依次),使得这 \(X\) 个人的 \(a\) 权值,\(Y\) 个人的 \(b\) 权值,\(Z\) 个人的 \(c\) 权值之和最大。

\(X,Y,Z\le 10^5\)。


技巧:排序证明贪心的正确性

一道很有启发意义的贪心题。

考虑只有两种权值 \(a,b\) 的时候我们怎么做,我们会先假设所有人都选 \(b\),然后把所有人按 \(a_i-b_i\) 从大到小排序,选前 \(X\) 个人从 \(b\) 变成 \(a\)。

这个贪心过程的正确性显然,但却不是很好严谨地证明。但是我们考虑这样一种表述方式:

“将所有人按照 \(a_i-b_i\) 从大到小排序,那么所有选择 \(a\) 的人一定排在所有选择 \(b\) 的人左边。”

这个的证明非常简单明了:如果有左 \(b\) 右 \(a\) 的对,把他们交换,显然很优!

而这个证明的简单明了,意味着它的做法可以放到这道题上面。

具体地,我们仍然把所有人按 \(a_i-b_i\) 从大到小排序,那么所有选择 \(a\) 的人依然一定排在所有选择 \(b\) 的人左边,尽管不是所有人都选了 \(a\) 或 \(b\)。

于是一定存在一个分界点 \(k\),在 \(k\) 左边的所有人选的都是 \(a\) 或 \(c\),在 \(k\) 右边的所有人选的都是 \(a\) 或 \(b\)。

两边分别拿个对顶堆维护即可。时间复杂度 \(O(n\log n)\)。

【贪心】AGC018C Coins的更多相关文章

  1. AGC018C Coins (set)

    题目大意: 给出n个人,每个人手里都有xi个金牌,yi个银牌,ci个铜牌. 你需要选出X个人,拿走他们手里的金牌,选出Y个人,拿走他们手里的银牌,选出Z个人,拿走他们手里的铜牌 X+Y+Z = n.并 ...

  2. 【Note】贪心

    感谢 $ \text{orzws/chy} $ 倾情授课. 目录 -1. 证明方式 0. 朴素贪心 AT2557 [ARC073C] Ball Coloring P2587 [ZJOI2008]泡泡堂 ...

  3. poj1742 Coins【多重背包】【贪心】

    Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions:43969   Accepted: 14873 Descriptio ...

  4. CF 1003D Coins and Queries【位运算/硬币值都为2的幂/贪心】

    Polycarp has n coins, the value of the i-th coin is ai. It is guaranteed that all the values are int ...

  5. Codeforces Round #494 (Div. 3) D. Coins and Queries(贪心

    题目链接 题目大意:给你n个物品,第iii个物品价值aia_iai​,询问q次,问你能不能凑出价值为qiq_iqi​的物品. 小贪心吧.从大到小找,能拿就拿就行了. #include<bits/ ...

  6. Coins and Queries(map迭代器+贪心)

    题意 n个硬币,q次询问.第二行给你n个硬币的面值(保证都是2的次幂!).每次询问组成b块钱,最少需要多少个硬币? Example Input 5 42 4 8 2 4851410 Output 1- ...

  7. 【贪心】【堆】AtCoder Grand Contest 018 C - Coins

    只有两维的时候,我们显然要按照Ai-Bi排序,然后贪心选取. 现在,也将人按照Ai-Bi从小到大排序,一定存在一个整数K,左侧的K个人中,一定有Y个人取银币,K-Y个人取铜币: 右侧的X+Y+Z-K个 ...

  8. CF1003D Coins and Queries 贪心

    Coins and Queries time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  9. $POJ1742\ Coins$ 多重背包+贪心

    Vjudge传送门 $Sol$ 首先发现这是一个多重背包,所以可以用多重背包的一般解法(直接拆分法,二进制拆分法...) 但事实是会TLE,只能另寻出路 本题仅关注“可行性”(面值能否拼成)而不是“最 ...

  10. Codeforces Round #494 (Div. 3) D. Coins and Queries (贪心,数学)

    题意:给你一组全是\(2^d\ (d\ge0)\)的数,询问q次,每次询问一个数,问这个数是否能够由原数组中的数相加得到,如果能,输出最少用多少个数,否则输出\(-1\). 题解:首先贪心得出结论:如 ...

随机推荐

  1. 华为云PB级数据库GaussDB(for Redis)揭秘第九期:与HBase的对比

    摘要: 高斯Redis,兼具开源Redis和HBase各自优点,提供成本更低.性能更好.灵活性更强的数据库服务! 本文分享自华为云社区<华为云PB级数据库GaussDB(for Redis)揭秘 ...

  2. NDPQ(NDP+PQ),定义分布式数据库新方向

    摘要:云服务提供商构建新的云原生关系数据库系统,专门为云基础架构设计,通常采用将计算和存储分离到独立扩展的分布式层的设计. 本文分享自华为云社区<性能提升100倍!GaussDB(for MyS ...

  3. APP安全加固怎么做?加固技术、加固方法、加固方案

    ​ 前面的文章中我们为大家介绍了移动应用安全检测的测试依据.测试方法.和测试内容,本文我们着重分享App安全加固的相关内容. ​ (安全检测内容) 通过前面的文章我们知道了app安全检测要去检测哪些内 ...

  4. PlayWright安装及使用

    PlayWright是由业界大佬微软(Microsoft)开源的端到端 Web 测试和自动化库,可谓是大厂背书,功能满格,虽然作为无头浏览器,该框架的主要作用是测试 Web 应用,但事实上,无头浏览器 ...

  5. 百年奥运的凌空之美,AI 云智剪背后的新算法

    奥运赛事每天都在上演冰雪奇迹,而捕捉发生瞬间,凝结最精彩.最动人的体育人文画面,让"冰之舞"."雪之舞"."速度之美"."凌空之美 ...

  6. 拥抱智能,AI 视频编码技术的新探索

    随着视频与交互在日常生活中的作用日益突显,愈发多样的视频场景与不断提高的视觉追求对视频编码提出更高的挑战.相较于人们手工设计的多种视频编码技术,AI 编码可以从大数据中自我学习到更广泛的信号内在编码规 ...

  7. AtCoder Beginner Contest 172 (C题前缀和 + 二分,D题筛因子,E题容斥定理)

    AB水题, C - Tsundoku 题目描述 有两摞书,一摞有 $n$ 本,从上至下每本需阅读 $a_i$ 分钟,一摞有 $m$ 本,从上至下每本需阅读 $b_i$ 分钟,问最多能在 $k$ 分钟内 ...

  8. 2019年第十届蓝桥杯国赛C++C组

    蓝桥杯历年国赛真题汇总:Here 统一声明 如果不写默认带有常用头文件 如果不表明主函数默认表示在 void solve(){} 默认使用 using namespace std; ios::sync ...

  9. 🚀Flutter应用程序的加固原理

    ​ 在移动应用开发中,Flutter已经成为一种非常流行的技术选项,可以同时在Android和iOS平台上构建高性能.高质量的移动应用程序.但是,由于其跨平台特性,Flutter应用程序也面临着一些安 ...

  10. 三、mycat实验数据

    系列导航 一.Mycat实战---为什么要用mycat 二.Mycat安装 三.mycat实验数据 四.mycat垂直分库 五.mycat水平分库 六.mycat全局自增 七.mycat-ER分片 最 ...