关于DP详见:[DP]合刊
定义
树形DP,即DP状态的转移和迭代在树上进行的一种动态规划。
经典例题
入门题
luogu P1352 没有上司的舞会 题解
简化题面后题意便是:给出一棵树,要求相邻两点不能同时取,问能取到的最多点数
类似于一本通 1301 / qzezoj 1613 大盗阿福
这两题唯一的区别就是一个是一颗树,一个是一个序列。
转移方程式也十分相似:
大盗阿福
f
i
,
j
=
{
f
i
−
1
,
0
+
w
i
(
j
=
1
)
max
(
f
i
−
1
,
1
,
f
i
−
1
,
0
)
(
j
=
0
)
f_{i,j}=\left\{ \begin{aligned} &f_{i-1,0}+w_i&(j=1)\\ &\max(f_{i-1,1},f_{i-1,0})&(j=0)\\ \end{aligned} \right.
fi,j={fi−1,0+wimax(fi−1,1,fi−1,0)(j=1)(j=0)
没有上司的舞会
f
i
,
j
=
{
∑
f
k
,
0
(
j
=
1
)
∑
max
(
f
k
,
0
,
f
k
,
1
)
(
j
=
0
)
k
∈
i
f_{i,j}=\left\{ \begin{aligned} &\sum f_{k,0} &(j=1)\\ &\sum \max(f_{k,0},f_{k,1}) &(j=0)\\ \end{aligned} \right. k\in i
fi,j=⎩⎨⎧∑fk,0∑max(fk,0,fk,1)(j=1)(j=0)k∈i
可以发现,树形DP和其他DP的区别仅仅在于形式不同,本质都是一样的
而树形DP和线性DP则更为相像,只有遍历的顺序不同。
当然也有在树上做其他DP的,
例如:
树上01背包:luogu P2015 二叉苹果树
树上分组背包:luogu P2014 [CTSC1997]选课
这两题也是很像的,唯一区别是一个是二叉树,一个是多叉树
常见思路
- 看起来可以模拟,又可以贪心,又在树上操作,99%是树形DP(by FLYing)
- 树的直径、重心
- 最大子树
- 树上最优值
常见解法
- 和其他DP相同
- 与直径重心相关
- 由一张无向图生成最小生成树后DP
- 换根
luogu例题
luogu上的树形DP
标签题
普及/提高-
普及+/提高
提高+/省选-
- P1270 “访问”美术馆
- P2899 [USACO08JAN]Cell Phone Network G
- P4438 [HNOI/AHOI2018]道路
- P1131 [ZJOI2007] 时态同步
- P2279 [HNOI2003]消防局的设立
- P2986 [USACO10MAR]Great Cow Gathering G
- P3047 [USACO12FEB]Nearby Cows G
- P4084 [USACO17DEC]Barn Painting G
- P3360 偷天换日
- P4362 [NOI2002] 贪吃的九头龙
- P3174 [HAOI2009]毛毛虫
- P6554 Promises I Can’t Keep
- P7574 「PMOI-3」子树
- P3177 [HAOI2015]树上染色
- P6594 [YsOI2020]换寝室
省选/NOI-
- P3554 [POI2013]LUK-Triumphal arch
- P6213 「SWTR-04」Collecting Coins
- P5666 [CSP-S2019] 树的重心
- P5680 [GZOI2017]共享单车
- P2607 [ZJOI2008]骑士
- P3576 [POI2014]MRO-Ant colony
- P3596 [POI2015]MOD
- P4253 [SCOI2015]小凸玩密室
- P3523 [POI2011]DYN-Dynamite
- P6419 [COCI2014-2015#1] Kamp
- P3565 [POI2014]HOT-Hotels
- P3574 [POI2014]FAR-FarmCraft
- P6287 [COCI2016-2017#1] Mag
- P3237 [HNOI2014]米特运输
- P3757 [CQOI2017]老C的键盘
- P7581 「RdOI R2」路径权值(distance)
- P6527 「Wdoi-1」幻能采集
- P6478 [NOI Online #2 提高组] 游戏
- P4492 [HAOI2018]苹果树
- P6122 [NEERC2016]Mole Tunnels
- P6793 [SNOI2020] 字符串
- P6653 [YsOI2020]造林
- P7498 磁控法则
- P7359 「JZOI-1」旅行