长链剖分:
跟重链剖分类似,只不过把重儿子从大小最大的改成最大深度最深的。
只要是以深度为下标的操作都可以用,比如$O(n)$统计每个子树内深度为u的点数。
Dsu-On-Tree:
跟长链剖分类似的一个小trick。
轻重链剖分后,对于每个点先递归解决轻儿子并暴力清除其贡献,然后递归解决重儿子并保留其贡献。
随后暴力枚举一遍轻子树内的所有点,更新答案。
总复杂度$O(nlog{n})$,可以用来数子树中出现最多的颜色之类的。
Prufer序列:
懒得研究构造了,直接记结论吧:
- n个点的有标号无根树个数为$n^{n-2}$。
- n个点的有标号有根树个数为$n^{n-1}$。