树上启发式合并
题单介绍
树上启发式合并是一个相当好用的优雅的暴力算法
这里就推荐几篇学习笔记吧:
[树上启发式合并 算法界优雅的暴力美学](https://zhuanlan.zhihu.com/p/561095530)
[算法学习笔记(86): 树上启发式合并](https://zhuanlan.zhihu.com/p/565967113)
[CF208E](https://www.luogu.com.cn/problem/CF208E) 把贡献搞到祖先上去,求距离相同的点对,最后别忘了减1。
[CF600E](https://www.luogu.com.cn/problem/CF600E) 毋庸置疑的板题,建议先做这个。
[CF570D](https://www.luogu.com.cn/problem/CF570D) 注意到回文串最多只会有一个字母出现奇数次,然后用异或和记录,就转换成了版题。
[CF1009F](https://www.luogu.com.cn/problem/CF1009F) 同时记一下最大值和当前深度后就直接跑即可。
[CF375D](https://www.luogu.com.cn/problem/CF375D) 用桶记一下每种颜色的出现次数,再按出现次数记一个桶,最后求一下桶的大小大于k的和。
[CF246E](https://www.luogu.com.cn/problem/CF246E) 按深度记,再拿个map存就可以了。
[CF1585G](https://www.luogu.com.cn/problem/CF1585G) 博弈+树上启发式合并,需要套一个 SG 函数,然后维护 SG 函数需要一个线段树二分。
[P9886](https://www.luogu.com.cn/problem/P9886) 首先要把环缩成点,然后就可以转化为树上求众数,需要支持一个断边的操作。
[CF741D](https://www.luogu.com.cn/problem/CF741D) 和上面的CF570D前面思路一样,用异或和确定回文串。对于路径和并时要讨论一下,是一道很好的题。