P4211 [LNOI2014]LCA(树链剖分/树论/讨论贡献/拆分贡献/离线技巧/差分与前缀和)

本文解析了如何高效解决LCA(最近公共祖先)问题在树形结构中的深度和查询挑战,通过交换枚举顺序、拆分深度、离线询问策略,降低查询次数并转化为前缀操作。涉及公共点计算和链的交集长度,展示了在信息技术中如何利用这些技巧优化算法复杂度。
摘要由CSDN通过智能技术生成

P4211 [LNOI2014]LCA

给你一颗n个点的树,有q次询问,每次询问一个 区间内的点到z的lca深度和。

思路就是看上去像是一个二维问题,但是这个东西又不好维护,所以我们考虑交换枚举顺序讨论贡献,首先深度这个东西我们可以理解为该点到根节点经过的点数,然后现在我们将深度拆开了,然后考虑每个点的贡献,那么这个点的贡献等于在它下面的lca个数,然后如果一个点是两个点最近公共祖先的祖先,那么它一定是两个点的公共祖先。

所以问题转化为求解一些点和z的公共祖先个数,那么我们发现实际上就是他们两个点到根的链的交集长度,那么我们可以对其他点链加1,然后最后对z询问到根的链权值和。

然后这样复杂度还不对,因为有q次询问,但是我们可以考虑将询问离线,就可以将问题转化为2q次询问前缀,那么就可以排序后一遍处理了。离线思想

不得不说这道题的确是一道好题,所有这种类似公共问题,都有一个性质就是只需要找到关键的公共点即可,类似的有最大公因数,最长公共前缀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值