P1352题解

本文最后更新于:2023年4月26日 晚上

题目大意

\(n\) 个人,每个人有一个上司,当他不和他的上司一起跳舞时,他会有一个快乐值,求当一些人一起跳舞时,所有人的快乐值总和最大值。

分析

且给出的关系一定是一棵树。

题面中的这个信息可以让我们知道这是一道树形dp的模板题,每个人的上司就是这个人的父节点。

树形dp

基本思路

我们用 dp[i][0] 表示不选该节点时的最大快乐值, 用 dp[i][1] 表示选该节点时的最大快乐值,用mc[i]表示该人的快乐值。

可以得到以下式子:

\[ dp[i][0]= \sum _{j是i的子节点} \max (dp[j][0],dp[j][1])~~~ \\ dp[i][1]= mc[i] + \sum _{j是i的子节点} dp[j][0]~~~ \]

这就是树形dp的基本实现。

选根

和一般的树形dp题目不一样,这道题不是从每一个节点开始遍历都可以得到答案,需要找没有父节点(没有上司)的节点开始遍历。

模板题,就不给出代码了。

这个思路可以过此题,如果本文有错误或不妥之处,请在下方留言。


P1352题解
https://blog.shuger.ml/P1352-sol/
作者
_Shu
发布于
2022年8月25日
许可协议