动态规划专题(二)——树形DP

前言

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 nm个节点染成黑色其实是等价的,不加上这个优化就会 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)

你可能感兴趣的:(动态规划)