跳转至

树形动态规划⚓︎

例题:没有上司的舞会

该问题为打家劫舍III 的多叉树推广。

动态规划问题的表示:

  • 状态表示
    • 集合
      • \(f(u,0)\) 表示所有从以 \(u\) 为根的子树中选择,但是不选 \(u\) 这个点的方案;
      • \(f(u,1)\) 表示所有从以 \(u\) 为根的子树中选择,并且选择 \(u\) 这个点的方案;
    • 属性:欢乐值的最大值。
  • 状态计算:按照 \(f(u,0)\) (不选 \(u\)) 和 \(f(u,1)\) (选 \(u\)) 分类讨论。

可得:

\[ \begin{cases} f\left( u,0 \right) =\sum_{s_i:\ \mathrm{son}\ \mathrm{of}\ u}{\max \left[ f\left( s_i,0 \right) ,f\left( s_i,1 \right) \right]}\\ f\left( u,1 \right) =\sum_{s_i:\ \mathrm{son}\ \mathrm{of}\ u}{f\left( s_i,0 \right)}\\ \end{cases} \]