首页 > 其他分享 >【贪心】AGC018C Coins

【贪心】AGC018C Coins

时间:2023-07-16 13:46:21浏览次数:38  
标签:所有人 个人 Coins 从大到 权值 AGC018C 排序 贪心

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)\)。

标签:所有人,个人,Coins,从大到,权值,AGC018C,排序,贪心
From: https://www.cnblogs.com/Charlie-Vinnie/p/17557750.html

相关文章

  • abc085d <贪心>
    题目D-KatanaThrower思路关键:连续使用ai与投掷bi并无冲突,可先使用ai再投掷bi找到ai中的最大值maxa;首先从大到小使用bi中比maxa大的元素,而后不足h再重复使用maxa(虽然按照先b后a的顺序分析计算,但实际上应是先用a后用b)代码Code//https://atcoder.jp/conte......
  • abc083d <思维 贪心>
    题目D-WideFlip思路参考live4m的博客其实全0和全1是无所谓的,只需要全部相同就行了,因为每次操作是令一个>=k区间的翻转,如果是全1,令[1,n]再翻转一次即可.考虑[1,i]已经相同,s[i]!=s[i+1]时如何操作,要使得[1,i+1]相同,要么[1,i]翻转,要么[i+1,n]翻转,为了使k最大,显......
  • 贪心题目合集
    CF626G题目链接比较简单的贪心。首先不去考虑修改操作,注意到这个条件我们可以看作有若干个物品,选取每个物品有\(1\)的代价和某个价值。有若干个限制条件是要选某一个必须要先选某个价值比他大的东西。根据贪心的原理这个限制条件其实跟没有一样,因为你不会先选价值小的东西。......
  • 神必贪心合集/fn
    CF1601DDifficultMountainhttps://www.luogu.com.cn/problem/CF1601D一道神必贪心首先我们分类考虑贪心的几种情况对于两个人\(i\)与\(j\),并且两人都满足s>p\(1.s[i]<a[i]\)\(\space\space1)\)\(a[i]<s[j]<a[j]\)显然\(i\)在\(j\)前更优\(\space\space2)\)\(a[i......
  • 数学归纳法证明贪心实例
    1.选择不相交区间问题(具体见一本通提高篇P4)假设已经选择的区间是最优的方案的一部分,下面考虑如何选择会使方案达到最优。因为是按照结束时间升序排序的,如果我们不选择当前这一个合法的(设为A)而是去选择之后的合法的(设为B),那么无论最后的方案是怎样的,都可以将B换成A从而符合题意。......
  • Strong Password(贪心思想)
    StrongPasswordtimelimitpertest2secondsmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputMonocarpfinallygotthecouragetoregisteronForceCoders.Hecameupwithahandlebutisstillthinkingaboutthepassw......
  • SMU 2023 Spring 题单 第二周 贪心
    Saruman'sArmy首先对序列排序,然后逐个考虑覆盖,如果要覆盖当前的点,则标记点越靠后越好,所有向后找\(R\),选择最靠后的标记,然后从标记点开始在向后找\(R\)也是被标记过的,直接跳过#include<cstdio>#include<algorithm>usingnamespacestd;intread(){intx=0,f=1......
  • 第二节 贪心
    引入贪心算法(英语:greedyalgorithm),是用计算机来模拟一个「贪心」的人做出决策的过程。这个人十分贪婪,每一步行动总是按某种指标选取最优的操作。而且他目光短浅,总是只看眼前,并不考虑以后可能造成的影响。可想而知,并不是所有的时候贪心法都能获得最优解,所以一般使用贪心法的时候......
  • abc065d <贪心+最小生成树> [lambda表达式]
    D-Built?//https://atcoder.jp/contests/abc065/tasks/arc076_b//贪心+最小生成树//关键在于意识到,连接x或y相邻的边代价最小,因而无需考虑全部的边,仅需考虑这些相邻边即可(贪心)//学习://1.lambda写法https://www.cnblogs.com/yaya12138/p/11815475.html//......
  • abc064d <贪心/前缀和>
    D-Insertion另一种做法,注意这两种写法:max_elementstring(个数,字符)//https://atcoder.jp/contests/abc064/tasks/abc064_d//贪心//要求答案为字典序最小,因而补充的'('都放在最前面,')'都放在最后面//从左到右遍历,记录未匹配的左括号个数cntl,//当......