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

本文深入探讨了二叉树及多叉树中寻找最低公共祖先(LCA)的有效算法。通过中序遍历技巧,文章揭示了如何在序列中定位LCA,并介绍了区间修改深度的方法来优化搜索过程。对于寻求提高算法理解和解决复杂树结构问题的读者来说,本文提供了宝贵的见解。

正题

      Portal

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

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

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

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值