其他分享
首页 > 其他分享> > 毛毛虫剖分

毛毛虫剖分

作者:互联网

目录

主要参考:https://www.cnblogs.com/A-Quark/p/16435243.html

毛毛虫剖分

问题描述

毛毛虫剖分,一种由轻重链剖分(HLD)推广而成的树上结点重标号方法,支持修改 / 查询一只毛毛虫的信息,并且可以对毛毛虫的身体和足分别修改 / 查询不同信息 .

严格强于树剖,而且复杂度和树剖一样哦!

一些定义(默认在一棵树上):

重标号方法

  1. 首先重剖求出重链 .
  2. DFS,若现在处理到结点 \(u\):
  3. 若 \(u\) 还未被标号,则为其标号 .
  4. 若 \(u\) 是重链头,遍历这条重链,将邻接这条链的结点依次标号 .
  5. 先递归重儿子,再递归轻儿子 .

重标号性质

这样就可以随便维护毛毛虫信息了,顺便还能维护链信息,子树信息等 .

时间复杂度同轻重链剖分 .

例题

NOI2021 轻重边

一棵 \(n\) 个点的树,\(m\) 次操作:

  • 对一条毛毛虫身体染黑色,足部染白色 .
  • 查询一条链上的黑边数量 .

\(n,m\le 10^5\) .

\[\Huge 以后再写 \]

标签:标号,结点,剖分,毛毛虫,重链,轻重
来源: https://www.cnblogs.com/CDOI-24374/p/16440764.html