适用范围
树上的问题,对于一个节点,需要统计其的子树,且由于一些限制(主要是空间),无法直接合并多个直接子儿子的状态,只能 统计,而 DSU on tree 可以优化至
做法
- 树链剖分
- 递归处理轻儿子,并删除贡献
- 递归处理重儿子,并保留贡献
- 计算轻儿子的贡献
代码
1 | void dfs(int u, int f) // 树链剖分 |
树上的问题,对于一个节点,需要统计其的子树,且由于一些限制(主要是空间),无法直接合并多个直接子儿子的状态,只能 统计,而 DSU on tree 可以优化至
1 | void dfs(int u, int f) // 树链剖分 |