主席树.
- 询问的点要求在子树 $x$ 内,并且 $dep\leq dep_x+d$ ,这样就有 $dfn,dep$ 上的两维限制,所以可以用主席树把符合条件的点抠出来.
- 只需要考虑怎么计算不同颜色的种数.对于一种颜色,可以在每个点的位置让权值 $+1$ ,而在 $LCA$ 处让权值 $-1$ .只需要处理 $dfs$ 序相邻的两个点的 $LCA$ (因为最深)就可以保证询问子树时贡献不会被重复计算了.
1 |
|
夢はここに 思い出は遠くに
主席树.
1 | #include<bits/stdc++.h> |