树形DP ———— 【HDU4003】 Find Metal Mineral

题目

给一棵 n n n个节点的树, 节点编号为 1 1 1~ n n n, 每条边都有一个花费值。
k k k个机器人从 s s s点出发, 问让机器人遍历所有边,最少花费值多少?

分析

基本思路

Q:

指定节点出发,那么我们需不需要考虑从当前节点向子节点祖先节点两种情况呢?

A:

不需要,虽然是指定 s s s 出发,但是因为是无根树,所以我们依然可以只考虑子节点的情况,只需要把 s s s 当作树根即可


想到这里,我们应该已经意识到这是一道树形dp的问题,则子问题的划分显而易见:
从以 u u u 为根节点的子树出发,派出 k k k 个机器人,遍历完子树所需的最小代价

回边的细节分析

Q:

如果把 k k k 个机器人派出,那么他们还返不返回呢?

A:

显然,很可能要返回


那么这里又出现了一个很重要的问题:回边,这也是这道题的难点


特殊情况一:

如果只有一个机器人,且最后需要返回 s s s
一个很显然的结论是:每一条边显然要被走过两遍,总代价设为 s u m sum sum s u m = ∑ w ( u , v ) ∣ u , v 是树上相邻的节点, w ( u , v ) 是边权 sum=\sum w(u,v) |u,v是树上相邻的节点,w(u,v)是边权 sum=w(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值