【DP 记录】AcWing 734. 能量石
给你几个物品,每种选一次,求最大价值,首先想到 01 背包,但是我们遇到了一个问题:
普通的 01 背包在选择物品时是不讲求顺序的,但在这道题中,物品的选择是有顺序的(即对最优解贡献有顺序),显然 枚举排列不可取,那我们能否提前确定好顺序,再来做背包呢?
考虑从贪心解入手
对于贪心解,我们得到一组排列 ,其中任选相邻的一对 和 ,我们将其交换位置,所得的新的解一定不增(否则就贪心地选这个顺序了),即它们的总贡献(注:能交换邻项的条件是改变它们顺序不影响其他项的结果)
消掉一些项,将有关 的移到左边,得
即我们可以按照这样排序,得到最优的顺序来背包。
如何证明贪心解即为最优解?
对于最优解的排列方式,我们可以将满足 的相邻两项交换,其解一定不降,所以 贪心解 ≥ 最优解。又因为,贪心解一定是合法解,所以 贪心解 ≤ 最优解,故 贪心解 = 最优解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】