cf208e-solution
CF208E Solution
求 k 级祖先可以简单地用倍增 / 树剖实现。考虑怎么求 k 级儿子数量。
我们发现想要确定这些 k 级儿子,我们只需要知道他们的深度及所属子树根,而这个所属子树根就是 k 级祖先。
我们又知道在一棵子树内的 dfn 是连续的,那么考虑对每个深度 \(d\) 建线段树,
把每个深度为 \(d\) 的节点的 dfn 的位置加 \(1\),那么我们要做的就是在对应深度的线段树内查询子树对应的 dfn 区间。
时间复杂度 \(\mathcal O(n\log n+q\log n)\),空间复杂度 \(\mathcal O(n\log n)\)。

浙公网安备 33010602011771号