[NOIP1996 提高组] 挖地雷 (动态规划)

本文解析了洛谷动态规划题目中的地雷挖掘问题,通过树状结构理解状态转移,展示了如何设置dp状态、推导状态转移方程,并提供了一个实例代码。关键在于抓住最优子结构和无后效性,学会运用DP解决实际问题。

燃 烧 的 大 脑 — — 动 态 规 划 燃烧的大脑——动态规划

题目大意:

洛谷例题题目传送门!!!


解题思路:

挖地雷,拥有最优子结构和无后效性特征,考虑DP。

那么接下来问题又来了,DP怎么推,状态是什么? 阶段是什么?
这时候,我们可以在脑海里建一个图:
把每个地窖看成一个节点,把地窖中的地雷数量看成点权,每个连接的地窖之间可以有一条无权边——这时候就很明显了

地窖之间的关系就是一颗带权的树!

然后我们再把样例套进这棵树,观察最优解在树中的关系,我们不难发现——最优解就是点权和最大的一条树须!由于题目说的可能比较抽象(至少我看到那输入输出完全不理解),但是,只要用笔按照树的规律一画,各个数据之间的关系图就一目了然了!

此时,如果把题目的输入省略,那么这个问题就变成了:

给定一颗带点权的树,求点权和最大的一条树须。

把这个例题转换成这样,这个问题就完成了一半,是不是只要和什么最大值最小值有关就下意识的知道接下来的DP该怎么写了——就下来就是烧脑的DP过程,建议洗把脸观看。

首先尝试设定状态:我们把 d p i dp_{i} dpi 记为如果只挖到地窖编号为 i i i 的时候的最大可挖地雷数。

这时候就要推状态转移方程了,抓稳了。

首先我们考虑某个地窖 i 已经和另外的一堆地窖连接了起来(就是说 i 节点已经是某条树须的某个部分),现在又进来了一个要考虑的地窖组 j j j(注意,这里说的地窖可能是一条树须,也就是说正在考虑的地窖可能也已经和另外的地窖连接起来了),那么此时,我们就要考虑地窖 i i i 到底要不要和地窖 j j j连接,条件是什么呢?条件就是 ——判断如果地窖 i i i 和地窖 j j j 的连接会不会使得 d p i dp_{i} dpi 的答案变差,也就是说不能降低 d p i dp_{i} d

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值