【动态规划】【模板】换根树形 DP
换根树形 DP
描述
当不同的结点作为根结点时,dp 的结果不一样,若枚举每一个结点为根结点再 \(DP\),时间复杂度会很高。这种情况下,使用换根 DP 处理相邻两个结点之间的贡献,达到换根的效果。
实现步骤
- 任选一个点进行 DP,得到 \(dp[i]\)。
- \(f[1] = dp[1]\),其中 \(f[i]\) 表示以 \(i\) 为根结点时的答案。
- 从根结点再 dfs,将答案从 \(dp\) 推向 \(f\)。
当不同的结点作为根结点时,dp 的结果不一样,若枚举每一个结点为根结点再 \(DP\),时间复杂度会很高。这种情况下,使用换根 DP 处理相邻两个结点之间的贡献,达到换根的效果。