5 10
1 2 1
1 3 2
2 4 3
2 5 4
7
7
6
5
4
4
3
3
2
1
N<=50000,M<=Min(300000,n*(n-1) /2 )
题解:点分治,将在分治过程中点到根的距离放在一个数组中,若将当前子树内的点作为路径的一个端点,另一个端点可以落在一个点分治序列的区间内(之前扫过的子树),长度最大n*logn, 用四元组表示
start,ends,l, r,用ST表维护对应的最优解,查询每一个节点作为起点在对应的l,r区间的最优解,并放入堆中。每次取出最大的元素,并把的它对应的次优解放进去。有点难敲,先放着。。。
BZOJ 3784 树上的路径(点分治+ST+堆+贪心)待处理
原文:https://www.cnblogs.com/Yokel062/p/11752653.html