Summa -「Date Structure」2

cirnovsky /

树上分块。

第一种是随机撒点,在树上随机撒 nS\frac{n}{S} 个点,关键点间期望距离不超过 SS。优势很明显,当 SS 取根号的时候,可以处理出所有关键点间的信息,然后跳根号次就可以跳出一条路径。这个做题的方法很可洞见。

第二种是王室联邦式分块,方法是,在 dfs 过程中将子树大小能够划到一块的就划,设 SS 为阈值,则每块大小为 [S,3S][S, 3S],块个数 nS\frac{n}{S} 左右。优势是每个点最近的为关键点的祖先的距离为 O(S)O(S)。这个做题的方法也是处理出关键点的信息,然后将询问拆成 xabyx \rightarrow a \rightarrow b \rightarrow y,其中 aabb 分别是 xxyy 的最近关键点祖先。

第三种是 top cluster,我显然不会。