原文:树链剖分讲解及总结(重链剖分+长链剖分)

树链剖分是解决树上问题的一种常见数据结构,对于树上路径修改及路径信息查询等问题有着较优的复杂度。树链剖分分为两种:重链剖分和长链剖分,因为长链剖分不常见,应用也不广泛,所以通常说的树链剖分指的是重链剖分。在这里讲解并总结一下树链剖分的实现 优秀性质及应用。 重链剖分 先来介绍几个重链剖分的专业名词: 重儿子:每个点的子树中,子树大小 即节点数 最大的子节点 轻儿子:除重儿子外的其他子节点 重边: ...

2018-09-06 19:52 2 2725 推荐指数:

查看详情

这是和(dsu on tree,http://www.cnblogs.com/zzqsblog/p/6146916.html)一类的trick,不过它的适用范围与dsu on tree不同,它适用于涉及到深度的查询。 例1 k-th ancestor query https ...

Thu Apr 13 01:00:00 CST 2017 4 3841
总结

是一种类似\(\mbox{dsu on tree}\)的小\(\mbox{trick}\),可以把维护子树中只与深度有关的信息做到线性的时间复杂度。 实现方式&复杂度证明 对每个点寻找深度最大的儿子作为重儿子,其余作为轻儿子。由此得到了若干条互不相交的。 在维护 ...

Mon Aug 13 23:50:00 CST 2018 5 5856
讲解

入门讲解 问题导入 当我们做题目的时候,往往会有一些题目是给定一颗,并对这颗做一堆蛇皮怪物般的操作的。 那么,我们要怎么做呢? 这里提供一种思想,就是把拆掉: 以轻重边为基础的拆边,把一颗拆成大大小小的几条放到类似于常用的线段里面加以操作。 轻重 ...

Fri May 25 06:18:00 CST 2018 15 697
总结

总结 概念 和轻重相似,都是将一棵树节点的信息分成多条的信息,但是前者是以深度,后者则是以子树大小来。 同时长还借鉴了$dsu\;on\;tree$的一些$trick$使得它能十高效地合并子树信息。 性质 破天荒地写了证明 性质 ...

Sun Jan 06 21:48:00 CST 2019 6 316

1. 相关概念 儿子:父亲节点的所有儿子中子树结点数目最多(size最大)的结点; 轻儿子:父亲节点中除了儿子以外的儿子; 边:父亲结点和儿子连成的边; 轻边:父亲节点和轻儿子连成的边; :由多条边连接而成的路径; 轻 ...

Mon May 11 18:06:00 CST 2020 1 560
随想

  之前写了那么一篇Blog…现在不如写篇小短文…说一下另一种方法——的事情。它可以比重更快地完成一些东西。   的原始版本非常经典,这里就不从头介绍了。   原本的方法是按照子树大小,与子树点数最多的儿子连成,所以叫做…然后显然就有 ...

Thu Feb 16 05:40:00 CST 2017 3 2564
详解

转载请注明出处,部分内容引自banananana大神的博客 别说你不知道什么是╮(─▽─)╭(帮你百度一下) 前置知识:  dfs序  线段 先来回顾两个问题:1,将从x到y结点最短路径上所有节点的值都加上z 这也是个模板题了吧 我们很容易想到,树上差可以以O(n+m ...

Thu May 10 20:54:00 CST 2018 27 22297
详解

前言 是什么? ,说白了就是一种让你代码不得不强行增加1k的数据结构-dms   个人理解:+1:joy: 有什么用? 证明出题人非常毒瘤 可以非常友(bao)好(li)的解决一些树上问题:grimacing: (友情提示:学分之 ...

Sun Dec 24 15:31:00 CST 2017 15 3433
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM