动态规划-树形DP

动态规划-树形DP
4FGR参考资料:树形 DP - OI Wiki
树形DP
树形 DP,即在树上进行的DP。由于树固有的递归性质,一般通过递归DFS(或 BFS) 进行
基础
某大学有 \(n\) 个职员,编号为 \(1\ldots n\)。
他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。
现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数 \(r_i\),但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。
所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。
不妨设 \(f(i,0/1)\) 表示以 \(i\) 为根的子树当其根节点的值 取/不取 的最优解( \(0\) 表示 \(i\) 不去舞会,反之要去)
对于每个状态,都存在两种决策(以下 \(x\) 为 \(i\) 的所有儿子)
- 上司不参加舞会时,下属可以参加,也可以不参加,是否参加取决于所能产生的最大快乐值,因此有
\[ f(i,0) = \sum max(f(x,0),f(x,1)) \]
- 上司参加舞会时,下属只能不参加,但下属的下属则未必
\[ f(i,1) = a_i + \sum f(x,0) \]
1 |
|
树上背包
有 $N$ 门功课,每门课有若干学分,分别记作 $s_1,s_2,\cdots,s_N$,每门课有一门或没有直接先修课(若课程 $a$ 是课程 $b$ 的先修课即只有学完了课程 $a$,才能学习课程 $b$)。一个学生要从这些课程里选择 $M$ 门课程学习,问他能获得的最大学分是多少?
换根DP
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果








![算法板子[updating]](/./images/2025-11-20/baka3.png)
![各题型题解[updating]](https://ooo.0x0.ooo/2025/05/25/OdQPQl.png?_r_=da728f1f-eef3-c164-9c54-942c4c9805a9)
