简单说一下静态点分治,快过年时候一个下午讲过去,现在都忘得差不多了,赶紧捡起来(背个板子)。
首先,点分治主要解决树的路径点权相关问题,其思想是分治(233)。
我们将树通过(子)重心进行“分块”,不断地进行统计,时间复杂度nlogn大概?
还是先来例题,不然说不明白= =
#POJ1741 树中点对统计
Description
给定一棵N(1<=N<=100000)个结点的带权树,每条边都有一个权值(为正整数,小于等于1001)。定义dis(u,v)为u,v两点间的最短路径长度,路径的长度定义为路径上所有边的权和。再给定一个K(1<=K<=10^9),如果对于不同的两个结点u,v,如果满足dist(u,v)<=K,则称(u,v)为合法点对。求合法点对个数。
Input
输入文件的第一行包含两个整数n和k,接下来n-1行每行都有三个整数u,v,l, 表示结点u和结点v之间有一条长l的边。
Output
输出文件只有一行为合法点对的个数。
Sample Input
5 4
1 2 3
1 3 1
1 4 2
3 5 1
Sample Output
8