传送门
发现 nk 可行,猜测是 O(nk) 的 DP。
容易想到设计 dp[i][j] 表示前 i 个物品,允许恶魔使用 j 次魔法的最大价值。
但是这样转移是有后效性的,因为恶魔可能在只考虑前 i 个物品的时候 与 只考虑前 j 个物品的时候 对于某个物品是否要使用魔法的决策不同。
这种情况下一种办法是考虑贪心,把 DP 的顺序确定下来。
比如这题,我们断言:最优的买物品的顺序一定是按 vi 升序购买。
证明:对两个物品 (v1,c1),(v2,c2),假设 v1<v2。v1,v2 的顺序的结果是 min(v1−c1,v2−c1−c2),v2,v1 的顺序结果是 min(v2−c2,v1−c1−c2)。
因为 v1<v2,所以 min(v2−c2,v1−c1−c2)=v1−c1−c2<min(v1−c1,v2−c1−c2)。所以前者总是比后者更优。证毕。
把物品按 v 升序排序。按 n→1 的顺序递推即可。(因为当恶魔决定要不要对 i 施法,与其相关的是 i+1∼n 的情况)
二次函数是假的
谢谢您
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!