TonyYin's Blog

Back

题意#

给定深井的深度 DD 和垃圾的数量 GG.

XLL想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。

XLL可以通过吃垃圾来维持自己的生命。

每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费XLL的时间。

给定每个垃圾扔下的时间 tit_i,高度 hih_i,可供维持 fif_i 小时的生命。

XLL在 00 时刻位于井底,要保证任何时刻的生命储备时长(生命值) >0>0,初始时生命值为 1010 小时。

求最早何时爬出,或最长存活多久。

2D,G1002\leq D, G\leq 1001t10001\leq t\leq 10001h251\leq h\leq 251f301\leq f \leq 30.

分析#

背包。

\Rightarrow 背包大小,垃圾高度 \Rightarrow 物品重量,维持生命的时长 \Rightarrow 价值。

对物品按 tit_i 升序排序,顺序加入背包。

g[i][j]g[i][j] 表示处理完前 ii 件物品后,高度为 jj 时的最大生命值,有转移:

gi,j=max{gi1,j+f[i]gi1,jh[i]g_{i, j} = \max\left\{\begin{array}{l}g_{i - 1, j} + f[i]\\g_{i-1, j-h[i]}\end{array}\right.

普通的 0/10/1 背包即可解决。

【Luogu-P1156】垃圾陷阱
https://www.tonyyin.top/blog/oi-solution/p1156
Author TonyYin
Published at October 28, 2022
Comment seems to stuck. Try to refresh?✨