好题:维护区间直径-F-牛妹的苹果树

传送门:https://ac.nowcoder.com/acm/contest/6885/F

题目大意:给你一棵树,多次询问,节点区间[l,r] 之间任意两点的距离的最大值

问题本质:

求区间点集带权直径

思路:

本题关键点:两个点集合并之后,新的直径 产生于 点集A直径的两个端点以及点集B直径的两个端点 两两组合 6种情况 之间.

证明反证法显然.

那么本题做法就显然了.由于是不带修改的,所以可以用ST表/线段树 维护 [区间直径的两个端点 + 长度].

更多树的直径相关问题:

1.HDU5993/ 2016icpc青岛L

给一棵树,每次询问删掉两条边,问剩下的三棵树的最大直径

考虑dfs序.砍一刀等价于砍出一颗子树.那子树在dfs序上一定是连续的.

所以区间相交分情况讨论,合并答案即可.

2.HDU3534 Tree.  统计树上直径个数. 

启发式/点分 一下即可.

3.CF Div3 : E. Minimal Diameter Forest 森林合并成一颗树 使得树的直径最大最小.

贪心.

猜你喜欢

转载自blog.csdn.net/qq_35577488/article/details/108575703