树形DP、换根DP
例题P2015 二叉苹果树
原问题可以转化为留下\(q+1\)个点,求最多点权。
\(f_{u,i}\)表示以u为子树,包括u留下i个点的最多点权。
u有两个儿子是l和r。
那么\(f_{u,i}=\max(f_{l,j}+f_{r,i-j-1})+val_u(0\leq j\leq i-1)\)
例题P1352 没有上司的舞会
\(f_{u,0}\)表示不选u的子树最大值,\(f_{u,1}\)表示选u的子树最大值。
设v为u的儿子.
\(f_{u,0}=\max(f_{u,0},f_{u,0}+f_{v,1},f_{u,0}+f_{v,0})\).
\(f_{u,1}=\max(f_{u,1},f_{u,1}+f_{v,0})\).
例题:移动信号
大意:选最少的点出来使得每个点都被覆盖。一个被选中的点可以覆盖与它距离不大于 1 的所有点。
设三个状态 \(f_{u,0}\) 表示 \(u\) 的子树全部被覆盖,且 \(u\) 被选, \(u\) 子树最少选的点。
\(f_{u,1}\) 表示 \(u\) 的子树全部被覆盖,且 \(u\) 不被选, \(fa_u\) 被选 ,\(u\) 子树最少选的点。
\(f_{u,2}\) 表示 \(u\) 的子树全部被覆盖,且 \(u\) 不被选, \(fa_u\) 不被选, \(u\) 子树最少选的点。
例题P2014 选课
树上背包+虚点。
例题:子树第 \(k\) 大
树上类似归并排序合并。
例题:P1272 重建道路
大意:删除多少边可以有一个大小为 \(k\) 的子树。
又是一道树形背包。
\(f_{u,i}\) 为 \(u\) 子树,剩 \(i\) 个点,至少删多少边。
例题:大集会
求一个点使得特定的点到该点距离和最小。
换根 DP.
设 \(v\) 为 \(u\) 儿子,边权 \(z\).
\(f_v=f_u+(n-siz_v)*z-siz_v*z\).