前言
D P DP DP这东西真的是博大精深啊…
简介
树形 D P DP DP,顾名思义,就是在树上操作的 D P DP DP,一般可以用 f i f_i fi表示以编号为 i i i的节点为根的子树中的最优解。
转移的时候一般都将信息由子节点转移到父亲节点,也就是将信息从下往上转移。
因此,一般树形 D P DP DP都会采用 递归 的形式。
典例1:树上背包
树形 D P DP DP中有一种比较经典的题型:树上背包。
其实它的思想与普通背包差不多,关键在于它玄学的时间复杂度。
很多看似
O
(
n
3
)
O(n^3)
O(n3)会
T
T
T飞(实际上也的确是这样)的题目,可能你用
O
(
n
3
)
O(n^3)
O(n3)的树上背包却能跑过(时间复杂度我也不会证),而且不是因为数据水。
可参考一道例题:【洛谷1273】有线电视网。
L i n k Link Link
【洛谷1273】有线电视网 的题解 详见博客 【洛谷1273】有线电视网(树上背包)
典例2:带权树的直径
普通的树的直径可以用
B
F
S
BFS
BFS来求,但如果是带权的,
B
F
S
BFS
BFS就会被卡炸(可惜我之前不知道)。
于是就用上了树形 D P DP DP。
可参考一道例题:【杂题】访问计划。
L i n k Link Link
【杂题】访问计划 的题解 详见博客 2018.10.03 NOIP+ 模拟赛 解题报告中的 T 2 T2 T2
几道例题
好吧, D P DP DP好像也没什么东西可讲,这样介绍得还是不够具体。干脆直接看例题来理解一下吧。
第一道例题: 【51nod1299】监狱逃离
这题是一道挺有意思的树形 D P DP DP题,我们可以考虑用 f f f数组来记录每一个节点的状态:完全封死、可以从这个节点到达叶子节点、有犯人可以到达该节点,然后就不难统计出答案了。
第二道例题: 【BZOJ4033】[HAOI2015] 树上染色
比较经典的树形 D P DP DP题。这道题最值得注意的地方不是 D P DP DP过程,而是注意在一棵有 n n n个节点的树上将 m m m个节点染成黑色与将 n − m n-m n−m个节点染成黑色其实是等价的,不加上这个优化就会 T L E TLE TLE。
第三道例题: 【BZOJ1040】[ZJOI2008] 骑士
一道恶心的基环外向树 D P DP DP,应该是比较模板的吧。
L i n k Link Link
【51nod1299】监狱逃离 的题解 详见博客 【51nod1299】监狱逃离(树形DP)
【BZOJ4033】[HAOI2015] 树上染色 的题解 详见博客 【BZOJ4033】[HAOI2015] 树上染色(树形DP)
【BZOJ1040】[ZJOI2008] 骑士 的题解 详见博客 【BZOJ1040】[ZJOI2008] 骑士(基环外向树DP)
本文深入探讨树形动态规划(DP)的原理与应用,包括树上背包、带权树的直径等经典问题,以及通过三道例题:监狱逃离、树上染色和骑士,详解树形DP的具体实现与优化技巧。
——树形DP&spm=1001.2101.3001.5002&articleId=82859031&d=1&t=3&u=2bbc1f921d214085ba091be5df1f779a)
798

被折叠的 条评论
为什么被折叠?



