[八省联考 2018] 林克卡特树 题解

本文介绍了一种结合树形动态规划与二分搜索算法解决选取树上不相交路径最大权值和问题的方法。文章首先定义了状态转移方程,并通过树形背包的思想进行了状态转移,接着提出了一种利用二分搜索简化计算过程的方法。

这道题我前前后后做了一年,共过了 4 4 4 遍,每次都有的新的理解;这次我认为自己理解透了,于是就写了一篇题解。

这道题是我入坑看到的第一道黑题(当时很萌,不知道黑题是什么,看到这题感觉很好玩),另外还有就是《切树游戏》和 Spiders Evil Plan,记载着我的回忆(

Description

传送门

Solution

算法一

为方便叙述,令树根为 1 1 1 w u , v w_{u,v} wu,v 表示 u , v u,v u,v 之间的边权, son { u } \text{son}\{u\} son{ u} 表示 u u u 的儿子组成的集合。

可以发现,答案即为 ⌈ \lceil 在树上选出 k + 1 k+1 k+1 条不相交的路径 ⌋ \rfloor 的最大边权和。

考虑 dp \text{dp} dp

f u , i , j f_{u,i,j} fu,i,j 表示,看了以 u u u 为根的子树,子树内一共选了 i i i 条不相交的路径,且 u u u 当前度数 j j j 的最大边权和。

  • j = 0 j=0 j=0,则目前没有包含 u u u 的路径。特别的,若以 u u u 为根的子树已经遍历完,则 f u , i , j f_{u,i,j} fu,i,j 表示所有该子树中的路径都被固定时的最大边权和(也就是说,遍历完子树后 f u , 0 f_{u,0} fu,0 对应的状态中 u u u 的度数可以为 0 0 0 1 1 1 2 2 2)。
  • j = 1 j=1 j=1,则目前恰有一条以 u u u 为一端的非固定路径(也就是说可以继续延伸出去,没有彻底固定这条路径的形态)。因为这条路径不固定,所以这条路径并没有被计入 i i i
  • j = 2 j=2 j=2,则目前有一条包含 u u u 的路径,且其任意一端均不为 u u u(跨越了 u u u 的两个子树)。

考虑使用树形背包转移。具体来说,令目前要将以 v ( v ∈ son { u } ) v(v \in \text{son}\{u\}) v(vson{ u}) 为根的子树合并上来,则有转移:

f u , i , 0 : = max ⁡ ( f u , i , 0 , max ⁡ j = 0 i { f u , j , 0 + f v , i − j , 0 } ) f_{u,i,0}:=\max(f_{u,i,0},\max_{j=0}^i \{f_{u,j,0}+f_{v,i-j,0}\}) fu,i,0:=max(fu,i,0,j=0max

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值