树上分块。
第一种是随机撒点,在树上随机撒 个点,关键点间期望距离不超过 。优势很明显,当 取根号的时候,可以处理出所有关键点间的信息,然后跳根号次就可以跳出一条路径。这个做题的方法很可洞见。
第二种是王室联邦式分块,方法是,在 dfs 过程中将子树大小能够划到一块的就划,设 为阈值,则每块大小为 ,块个数 左右。优势是每个点最近的为关键点的祖先的距离为 。这个做题的方法也是处理出关键点的信息,然后将询问拆成 ,其中 , 分别是 , 的最近关键点祖先。
第三种是 top cluster,我显然不会。