摘要: 1. 树的重心:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 性质: 树中所有点到重心的距离和是最小的,一棵树最多有两个重心(比如就两个点连个边). 把两棵树通过加一条边得到一颗新的树,新的树的重心必然在连接原来两棵树重心的路径上. 一棵 阅读全文
posted @ 2021-04-07 21:32 acmloser 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 想了半天没想出来怎么从父节点的深度和推到子节点深度和,我果然fw 思路: 换根dp模板题.也称二次扫描法,第一次多用于预处理,第二次多用于计算答案. 第一次dfs时,用子节点更新父节点,计算每个结点的子树结点个数,并计算当前假定根的深度和 第二次dfs时,用父节点更新子节点 阅读全文
posted @ 2021-04-07 20:17 acmloser 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 推dp转移方程的时候,总是忘记f数组原来定义的含义...初始化也可以帮助推出dp数组. 思路: f[u][j] 表示以u为根的子树中,保留j个点最少的剪枝数.初始化f[u][1] = son[u].这样初始化一开始点都是独立的,通过下面的转移方程将它们连起来. 那么dp转移 阅读全文
posted @ 2021-04-07 12:31 acmloser 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 思路: 参考大佬的思路,本蒟蒻还以为是有依赖的背包问题,但是直接开背包数组会MLE. 定义f[i]为以i为根节点的子树中,最大的结点和.f[i] = max(f[i],f[j](j为i的所有直接或间接的子节点)). 这道题是选两个不相干的最大子树和,需要在每个结点处取最值. 阅读全文
posted @ 2021-04-07 02:08 acmloser 阅读(50) 评论(0) 推荐(0) 编辑