树形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\).

posted @ 2022-08-13 13:34  s1monG  阅读(21)  评论(0编辑  收藏  举报