题目描述
给你一棵 n n n 个节点的树,每个节点有一种颜色,有 m m m 次查询操作。
查询操作给定参数 l r x l\ r\ x l r x,需输出:
将树中编号在 [ l , r ] [l,r] [l,r] 内的所有节点保留, x x x 所在连通块中颜色种类数。
每次查询操作独立。
对于 100 % 100\% 100% 的数据,所有出现过的数在 [ 1 , 1 0 5 ] [1,10^5] [1,105] 之间,保证每次输入的 l ≤ x ≤ r l \le x \le r l≤x≤r。
题解
建出点分树,可以发现这样一个性质,对于树上任意一个连通块,一定有一个连通块上的点,在点分树该点的子树中包含连通块的所有点
那么对于每个询问中的 x x x,我们找到它在点分树上一个深度最低的祖先 v v v,满足 v v v与 x x x可以通过 [ l , r ] [l,r] [l,r]之间的点连通,那么问题就变成了求 v v v所在连通块中颜色种类数,连通块只会在 v v v的点分树子树内,这就变得很好做,一个点和 v v v是否连通可以求出它到 v v v的编号最小值 min \min min</