看了题目的讨论才会做的 首先一点,算每条边(u, v)对于n*(n+1)/2种[l, r]组合的贡献 正着算不如反着算 哪些[l, r]的组合没有包含这条边(u, v)呢 这个很好算 只需要统计u这半边的点中有哪些连续数字,连续的数字就是一个[l, r]组合 就可以算出u这半边有哪些潜在的[l, r]组合 当然u这半边算好了,v这半边正好是u的数字反过来 这个过程可以使用set来统计,很好写 现在我们解决了对于一个边怎么算贡献 现在需要使用点分治 使用点分治求重心进行遍历保证了每个点至多被放入s…