树链的并 学习笔记

做法

按dfn序排好序后,
所有点到根距离-所有相邻两点lca到根距离为树链的并总长

sort(que+1,que+n+1,cmp);
for(i=1;i<=n;i++) res+=dis[que[i]];
for(i=1;i<=n;i++) res-=dis[LCA(que[i],que[i+1])];

简略证明

如图:
1086046-20170115171359900-1924934708.jpg
dfn序为anc,x,y,z
求x,y,z树链的并:dis[anc]加3次减2次
求x,y,z,anc树链的并:dis[anc]加4次减3次(LCA(anc,x)=anc)

用途

可以树链的并求和
也可以树链的并修改
可以解决子树不同数问题

转载于:https://www.cnblogs.com/acha/p/6287501.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值