P1156 垃圾陷阱

发布时间 2023-10-31 10:23:44作者: RainPPR

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\)