P1156 垃圾陷阱

在这里插入图片描述


这道题要求了两个量,第一个是在能够爬出时爬出的最早时间,另一个是不能爬出时的最长存活时间

首先来思考第一问,如果能够求出能够爬出的最早时间。在这道题中我们似乎能够找到的是两个费用,即生存时间和高度,由于这两个量的范围并不是很大,那么可以试试简单的将这两个量作为dp数组的两个维度。

这时候会出现一个问题,我们是应该将第一个时间的意义作为“在所有时刻中能够存活的时间”还是“能够存活的最长时刻”,假如你以能够存活的所有时间作为维度就会陷入很困难的境地,并且题目给出了每个垃圾出现的时刻,那么我们不如就将“能够存活的最长时刻”作为第一个维度。

那么这个dp数组存放的属性是什么?此题中我们仅仅需要求出是否能够爬出以及爬出的最早时间,并不需要维护其他的量,那么我们可以直接进行可行性dp

另外还有转移方程,在这题中就是对每一个垃圾进行选择增加生存时间和增加高度的决策,那么就直接在dp[i][j]为真的情况下让dp[i + f[i]][j]dp[i][j + h[i]]为真就可以了。

那么这时候我们也能够自然而然的思考出第二问,即能够存活的最长时间就是我们一直对垃圾进行增加能量的操作,而不去增长高度,那么就可以遍历时间取出 dp[maxtime][0]


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值