什么是换根DP及第一步操作说明

第一步 以任意一点统计

我们规定任意一个点作为根 root,进行树形 DP 的操作。

获取以确定 root 为根的状态下,所有子树的深度 deep\[\]。

具体的,设当前 dfs 的点为 cur,孩子节点是 nex:

  1. 对每个进入 dfs 的 deepcur 初始化为 1,表示当前节点可以有层数为 1 的贡献
  2. 遍历每个每个孩子节点
  • 先递归操作 nex 节点,当递归结束到下一行代码时,表明 deepnex 已经计算好了
  • 将获得的 deepnex 对当前 deepcur 进行松弛。注意松弛时,要累计上 cur 的这层,可得 deepcur = max(deepcur, deepnex + 1);

以上的描述,就是最基础的树形 DP 操作。也是换根 DP 中的第一轮扫描。

下方是假设以点 3 为 root 的搜索结果:

相关推荐
Coder-magician2 小时前
《代码随想录》刷题打卡day31:动态规划-背包问题part02
算法·动态规划
OuO-22 小时前
笔试强训 Day 43:kotori 和抽卡(二)、ruby 和薯条、循环汉诺塔
数学·前缀和·二分查找·动态规划·排序·滑动窗口·循环汉诺塔
hanlin0321 小时前
动态规划专练:力扣第718、1143题
算法·leetcode·动态规划
hanlin031 天前
动态规划专练:力扣第1035、392题
算法·leetcode·动态规划
Tasiorh2 天前
《基于LSTM-RNN-CBAM模型和动态规划模型的交易策略》
rnn·lstm·动态规划
幸福回头3 天前
Tyvj 1246 EZ_lzh☆数字格子
动态规划
cpp_25014 天前
P1113 [USACO02FEB] 杂务
数据结构·c++·算法·动态规划·图论·拓扑排序·洛谷题解
VL——MOESR4 天前
【LuoguP6772】美食家【DP】【矩阵】【倍增】
c++·算法·矩阵·动态规划·倍增
皓月斯语6 天前
P2858 [USACO06FEB] Treats for the Cows G/S
数据结构·c++·算法·动态规划
千里之行,始于足下sanhai7 天前
P8686 [蓝桥杯 2019 省 A] 修改数组 - 数字魔法大冒险 题解
c++·算法·动态规划