前言: 树的直径指树上距离最远的两点间的距离,它在树上问题上有许多应用,往往通过树的直径的性质可以将一个高时间复杂度的解法变为线性求解。对于树上两点间距离通常有三种定义,我们根据这三种情况分别讨论一下它的性质。 树的直径的求法: 树的直径有两种求法,时间复杂度都是$O(n)$。 贪心 ...
想了我好长时间。。。 树的重心如果不唯一,则至多有两个,且这两个重心相邻 先假设有两个重心 u,v 不相邻,考虑它们之间的这条路径,则至少有三个节点 以下的 它们之间的路径 都是指 u,v 之间的路径 设 u 的不包含它们之间的这条路径的若干子树中 就是有一个子树是以它们路径上与 u 相邻的那个点为根的,先排除那个子树 ,最小的子树大小是 size u ,则 v 的包含它们路径的那个子树的大小为 ...
2020-08-21 20:57 9 1200 推荐指数:
前言: 树的直径指树上距离最远的两点间的距离,它在树上问题上有许多应用,往往通过树的直径的性质可以将一个高时间复杂度的解法变为线性求解。对于树上两点间距离通常有三种定义,我们根据这三种情况分别讨论一下它的性质。 树的直径的求法: 树的直径有两种求法,时间复杂度都是$O(n)$。 贪心 ...
本文转自http://fanhq666.blog.163.com/blog/static/81943426201172472943638/ 求树重心的方法:(NlogN) http://www.cnblogs.com/qlky/p/5780933.html 还记得曾经提到 ...
(由于本人太菜所以最近一直在补一些基础算法……) 求树的重心的基本思想就是从每个节点出发分别遍历一遍树,统计max_part,其中能够使得max_part最小的就是树的重心 另外:一棵有根树至多有两个重心,这个结论好像有些题可以用(比如BZOJ4337,不过那个数据太水只有50(什么暴力乱搞 ...
先任选一个节点作为根,将无根树转换成有根树,代码实现是DFS。 以图9-13的节点i为例,因为是任意选择一个节点做DFS,有以下几种可能: 1.以节点i为根节点,有三个子树 2.以左下方节点为父节点,访问节点i,有两个子树 3.以右下方节点为父节点,访问节点i,有两个子树 4. ...
树的性质: 1、高度为 m 的树中第 i 层上至多有 mi-1 个结点(i≥1)。 2、高度为 h 的 m 叉树至多有(mh-1)/(m-1)个结点。 证明:等比数列求和 S=1+m+m2+......mh-2+mh-1=(mh-1)/(m-1) , 注意等比数列求和的n指的是 ...
前言 下午HHY还有AAK看到了这个 质问我Prufer序列是啥 被迫复习一波 引入 直接从题目看吧 [HNOI2004]树的计数 大概意思就是给你n个节点 告诉你每个节点的度数 然后问你根据这些度数能够生成多少棵树 看样例 画个图解释一下 题目中给出的样例只有这两种情况 ...
得 有了树的重心的性质拓展 序 闲登小阁看新晴 树的重心 在树的问题中,会遇到一些题目。时问 ...
关于树的重心的一些性质都没有理解的很好 在此总结一下。 树的重心的应用 点分治 点分树 动态维护树的重心等等。 关于点分治的复杂度一论 这个其实是套用了 分治的思想 或者是CDQ 的思想 对区间不断的进行递归分治,这个分治可以很快的分出断点mid 而在树上我们就无法快速得出这个mid ...