从国王游戏看邻项交换
upd on 2024.2.23:才发现我是 sb,证了些什么玩意。(交换处证反)
对于这道题,我们只来证明贪心的正确性,并不探究推导过程(这么玄学的贪心真有人能推导出来吗)。
我们需要证明按照
现在,我们钦定序列按照
首先,交换若干对数的本质就是不断选择一对数对其交换,所以我们需要证明从序列中交换任意
可以发现,交换
交换
经过这样的操作,我们把
所以交换一对数的本质就是不断交换相邻的一对数。所以我们只需证明从序列中交换一对相邻的数是不优的。
这就是贪心的重要证明方法——邻项交换。
我们如果要证明一个贪心得到的序列是最优的,只需证明交换相邻一对数不会更优。
如果交换两个相邻元素对其他元素没有影响,只对这两个元素得到的答案有影响,那么就可以按照某种方法排序来贪心。
可以发现,邻项交换的重要特征就是答案不具有牵连泛性,当然,这是我自己取的名词。
牵连泛性,即对一些元素按照某种方式修改不会对其它元素的贡献产生牵连。
看回这道题,交换相邻两个数对于前面数和后面数的贡献显然不会变。
那我们现在考虑交换
设
交换后,贡献较大值为
需要证明
显然,四者中最大值只能从
于是四者中的最大值为
证毕。
开头说不会探究推导,但感觉可以推导。
从思考的角度来看,要对原始序列交换,看什么情况下更优,钦定不交换更优,可以倒推出同样的结论。
另外,此题需要高精度。
最后,附上 yk 课件中贪心的描述。
贪心算法难点在于很难一次想到一个正确的算法
直觉上的贪心很多时候是错的,但是你又很难去真正证明它的正确性
通常我们只能通过举反例证明其不对
或者通过构造各种数据对拍,如果拍不出错误就暂且当做它是正确的
在平时训练的时候,最好还是能够掌握贪心算法的大概证明
当然如果没有其他思路了,就大胆猜想,不用证明了
关于贪心证明方法。
临项交换:
如果交换两个相邻元素对其他元素没有影响,只对这两个元素得到的答案有影响,那么就可以按照某种方法排序来贪心。
范围缩放:
任何局部最优策略作用范围的扩展不会造成整体结果变差
反证法
数学归纳法
例题:CF746F
先写到这,等想起什么再更。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具