树链剖分(Heavy-Light Decomposition)2016.10.12

树链剖分是一种将树拆分成链进行处理的方法,主要用于优化树上的一些操作,如链上求和、求最值、链上修改等。通过两次DFS可以实现节点的size、depth、top和id等属性的计算,确保重链在线段树中的连续分布。在进行修改、求和或求最值操作时,根据节点是否在同一重链上采取不同策略。

参考:http://blog.sina.com.cn/s/blog_7a1746820100wp67.html

https://oi.abcdabcd987.com/summary-of-heavy-light-decomposition/

http://blog.youkuaiyun.com/acdreamers/article/details/10591443


一、概述

所谓树链剖分,就是把树上的路径进行重链、轻链的划分

它并不是一个复杂的算法或者数据结构,只是能把一棵树拆成链来处理而已

换句话说,树链剖分只是 xx 数据结构 / 算法在树上的推广


定义 size[v] 为以 v 为根节点的子树节点的个数,引入一些概念

  • 重儿子(Preferred Child):令 u 为 v 的儿子中 size 最大的节点,那么 u 就是 v 的重儿子,一个节点最多只能有一个重儿子
  • 重(zhòng)边(Preferred Edge):连接父亲节点和重儿子的边
  • 重链(Preferred Path):由重边及重边连接的节点构成的链


<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值