「CEOI2019」动态直径,LOJ3163,巧妙的树上差分

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Deep_Kevin/article/details/102710366

正题

      Portal

      这题做法好妙啊,首先考虑二叉树的时候,中序遍历一下,公共祖先肯定在里面,而且比lca深度更小的祖先肯定不在里面。

      然后考虑一棵多叉树,在遍历两个儿子之间在序列中插入一个自己,在开始遍历和结束插入一下自己(其实这里不必要)。

      现在的任务就是找到一组点(L,M,R),使得L<=M<=R,且dep[L]+dep[R]-2*dep[M]

      因为边权都是正数,所以如果(L,R)选定了,中间选的肯定就是M,因为在L,R之间,M深度肯定是最小的。

      那么每次就是区间修改深度了,维护可以直接做。在这里不多说。

猜你喜欢

转载自blog.csdn.net/Deep_Kevin/article/details/102710366