【题目链接】 BZOJ UOJ 【思路要点】 考虑点\(i\)和点\(j\)路径上任意一点\(k\),那么$$R_{i}+R_{j}≥Dist(i,j) \Leftrightarrow R_{i}-Dist(i,k)≥Dist(j,k)-R_{j}$$ 令\(F_{i,k}=R_{i}-Dist(i,k)\),即\(F_{i,k}≥-F_{j,k}\) 若原树不动,显然可以通过点分治配合排序+二分的方式在\(O(NLog^{2}N)\)的时间内求解点对个数。 若不要求算法在线,而是提前预知树的形态,我们可以先将点分树构建出来