首页 > 其他分享 >反悔贪心总结

反悔贪心总结

时间:2022-12-01 12:33:35浏览次数:78  
标签:总结 要求 解决方案 不选 反悔 物品 贪心 断点 属性

综合题: AGC018C Coins

大致可以分为两种类型, 即要求全选或者有的可以不选。


第一类: 要求全选

问题简述: 给定\(x + y\)个物品, 每个物品有\(a_i\), \(b_i\)两种属性, 要求取出\(x\)个\(a\)属性, \(y\)个\(b\)属性, 要求属性和最大

解决方案: 先假设每个物品都取\(a\)属性,那么要把一个物品变成\(b\)属性的代价为\(b_i - a_i\), 用大根堆维护,取最大的\(y\)个即可.

第二类: 有的可以不选

问题简述: 给定\(n\)个物品, 每个物品有\(a_i\)和\(b_i\)两种属性, 要求取出\(x\)个\(a\)属性, \(y\)个\(b\)属性, 要求属性和最大。(保证\(x + y < n\))

解决方案: 因为有的物品可以不选,所以第一类的解决方案明显不可以。 我们假设\(c_i = b_i - a_i\)

考虑什么时候\(i\)取\(a\) , \(j\) 取\(b\)时比\(i\)取\(b\) , \(j\) 取\(a\)时优

\[a_i + b_j > b_i + a_j \]

\[a_i - b_i > b_i - b_j \]

\[c_i > c_j \]

所以对于任意取\(a\)的\(i\)和任意取\(b\)的\(j\)都有\(c_i > b_j\). (否则一定不是最优,调整法可证。)

因此我们可以按\(c_i\)从小到大排序后。 枚举断点,断点后边取\(x\)个最大的\(a_i\), 前面取\(y\)个最大的\(b_i\), 这个东西可以用优先队列预处理.

综上时间复杂度为\(O(n\log_{2}n)\)

标签:总结,要求,解决方案,不选,反悔,物品,贪心,断点,属性
From: https://www.cnblogs.com/absolutey/p/16941065.html

相关文章

  • 代码随想录训练营第五十天 | 贪心算法
    今天是第五十天,还有十天一刷就结束了,今天继续是动态规划 123.买卖股票的最佳时机III classSolution{publicintmaxProfit(int[]prices){intn......
  • 2013总结
     前天经过毕业后来深圳居住的地方,同样的街道,同样的吵杂,同样的热火朝天,一切都似乎在昨天,但是人的心境已然变换,脑海中的那些人仍然是年轻时的样子,脑海中的那些快乐的事仍然......
  • .Net【Winform】BackgroudWorker总结
    BackgroundWorkerWinfrom程序经常会有一些后台耗时操作,例如批量处理,如果在主UI线程上执行,UI线程会卡死,用户的使用感觉会很差。而BackgroundWorker提供了执行异步操作,配合......
  • 继承--总结
    继承特点子类默认拥有父类的所有属性和方法子类重写父类同名方法和属性子类调用父类同名方法和属性super()方法快速调用父类方法私有权限不能继承给子......
  • 常用代码模板6——贪心
    贪心夹逼定理(若a>=b,b>=a,则a==b)证明用当前方法得到的结果就等于最优解区间问题可以尝试的突破口:排序(按左端点或右端点或双关键字排序)常用证明方法:基本......
  • Numpy库常用函数总结
    引言:Numpy是科学计算库,是一个强大的N维数组对象Ndarray,计算功能是数组的50倍,具有广播机制。其包含的数学函数极大地方便了数据计算与研究,也是pandas和Scipy的基础.impo......
  • Reack hooks useEffect 总结
    useEffect总结特性参数必须是一个回调函数与一个数组组件首次加载会执行一次useEffect的回调,之后依赖的值更新则会执行useEffect中的回调。如果第二个参数是一个空数......
  • Git相关操作总结
    1.查看仓库信息gitremote-v2.初始化git仓库gitinit3.添加远程仓库地址gitremoteaddorigin仓库地址4.从远程仓库克隆下载代码gitclone-b分支名称远程......
  • RocketMQ吐血总结
    RocketMQ吐血总结架构 概念模型最基本的概念模型与扩展后段概念模型 存储模型 RocketMQ吐血总结UserGuideRocketMQ是一款分布式消息中间件,最初是由阿里巴巴消息中间件团......
  • RocketMq总结
    RocketMq总结转载自:https://zhuanlan.zhihu.com/p/525640488一、RocketMq组成进行一个比喻,在RocketMq中有四个部分组成,分别是Producer,Consumer,Broker,以及NameServer,类......