P1156 垃圾陷阱
P1156 垃圾陷阱
考虑设计状态转移方程 \(dp_{ij} = \; ?\)
本题一共有四个参数:物品、高度、生命值、时间,然后考虑如何定义 \(i\)、\(j\) 和 \(dp_{ij}\)。
于是可以按照垃圾的出现时间来排序,而物品作为第一维 \(i\) 表示考虑前 \(i\) 个垃圾。
然后就剩下了[高度、生命值]两个值了,因为高度的最大值为 \(200\),而生命值最大可达 \(GF + 10 = 3010\),于是就把高度设为第二维 \(j\),生命值(最大的生命值)最为 \(dp_{ij}\)。
即 \(dp_{ij}\) 表示考虑前 \(i\) 个垃圾,高度达到 \(j\) 时的最大生命值。
因此有 \(dp_{i,\,j} = \max(dp_{i-1,\,j} + v_i, dp_{i-1,\,j-h_i})\),且 \(dp_{0,\,0} = 10\)。
考虑什么时候无法转移,即某一时刻的生命值小于时间,同时也一定为垃圾掉下来的前一瞬间,所以可以表示为:若 \(dp_{i'j'} \ge t_i\) 则可以转移。
最后考虑答案是什么:
- 若 \(\exists\, i: [dp_{i,\,D} \ge t_i]\),则可以逃出去,且逃出时间为最小的 \(t_i\);
- 否则不能逃出去且最长存活时间为 \(\max dp\)。
本文来自博客园,作者:RainPPR,转载请注明原文链接:https://www.cnblogs.com/RainPPR/p/solution-p1156.html
如有侵权请联系我(或 2125773894@qq.com)删除。