题意 : 给你一个大小为 n n n的树,我们想求解一个问题,问题的定义是找有多少条路径满足恰好满足路径的端点是路径的最小值 o r or or最大值条件之一,【注】不能同时满足路径的两个端点是最小值又是最大值
现在增加 m m m个操作,每个操作接在 k j k_j kj节点上,每次操作都要回答增加节点后的问题答案。
思路 :
[vp时思路] 我们可以很容易地发现这个问题可以离线,然后我们考虑离线,我们考虑怎么维护端点是路径的最大值 o r or or最小值呢,我们考虑第一个 t r i c k trick trick-按照点的顺序重新合并点集。
第一步:我们先按 1 − n 1-n 1−n的顺序遍历点集,每次合并只合并原树连在 i i i节点,且比 i i i节点小的点。
举个例子
4
1 2
2 3
1 3
我们连点的顺序是
1 - //1作为最大值的路径数为 0
2 - 1 //2作为最大值的路径数为 1
3 - 1 、2 //3作为最大值的路径数为 2
这样合并之后我们可以发现我们可以统计出以 i i i