P5311-Ynoi2011-成都七中
题意
给出一棵树,点有颜色。\(Q\) 次询问 \(l,r,x\) 在保留编号 \([l,r]\) 的点的 \(x\) 点所在连通块大小。
思路
考虑如果一个点 \(p\) 和 \(x\) 联通,那么说明在 \(x\leftrightarrow p\) 的路径上全部都满足 \(u\in [l,r]\)。然后考虑先跳到 \(x\) 最顶上的点,这样我们只需要考虑这个点的子树即可,问题是子树大小 \(\mathcal{O}(n)\) 我们并不是很方便去统计。
考虑点分树,我们考虑点分树上 \(x\) 的祖先一定存在一个位置使得这个连通块的点都在这个祖先的子树里,因为跨子树就是相当于这个点是公共祖先,那么显然都在一个子树里。
我们考虑每一个结点存一下它点分树所有父亲到它路径上的极值和根。然后在每个根那里存自己节点的到根的结点范围和自己的颜色。
查询就变成了一个离线二位数点即可。
复杂度 \(\mathcal{O}(\sum N\log n+Q\log n)=\mathcal{O}(n\log^2n+q\log n)\)

浙公网安备 33010602011771号