首页 > 其他分享 >树链剖分 学习笔记

树链剖分 学习笔记

时间:2023-03-19 18:55:06浏览次数:25  
标签:长链 子树 cur 剖分 笔记 儿子 树链 节点

apple365:这个东西没有不可替代的作用

重链剖分

按照重儿子和轻儿子划分。
第一遍 dfs 求出 siz[],fa[],dep[],son[]
第二遍打 dfn
每次走重儿子会走出一条重链。之后再轻链里面走重儿子又可以把整棵树划分成若干条链。
性质:

  1. 每一条链都是轻儿子开始,然后都是重儿子。
  2. 每一条链的 DFS 序是连续的。
  3. 每一颗子树的 DFS 序是连续的。

应用:

  1. LCA(x,y):
  • 检查 \(x\) 和 \(y\) 是否在同一条链上。若是,深度小的是 LCA。若不是,每次跳 dep[top[cur]] 更大的。
  1. 求两点之间路径长度。
  2. 将链或者子树转化成区间+数据结构。

长链剖分:

对于一颗树,将节点按照子树内的深度剖分,把深度最深的子树对应的子节点视为重儿子。
一条长链:由顶端点(轻儿子)+若干重儿子构成。
性质:

  1. 一条长链的末端点一定是所在子树深度最大的节点。
  2. 树上节点 cur 的 \(k\) 级祖先(\(k\) 从 \(0\) 开始)所在长链的长度一定大于 \(k\)。
  3. 树上任意节点 cur 到根节点经过的轻边数不超过 \(\sqrt n\)。

标签:长链,子树,cur,剖分,笔记,儿子,树链,节点
From: https://www.cnblogs.com/Forever1507/p/17233932.html

相关文章

  • JUC源码学习笔记8——ConcurrentHashMap源码分析1 如何实现低粒度锁的插入,如何实现统
    源码基于jdk1.8这一片主要讲述ConcurrentHashMap如何实现低粒度锁的插入,如何实现统计元素个数,如何实现并发扩容迁移系列文章目录和关于我一丶ConcurrentHashMap概述......
  • 构建之法阅读笔记01
    ①重要的单元测试:有效解决程序员对模块功能的误解、疏忽或不了解模块的变化之类的问题,使自己负责的模块功能定义尽量明确,模块的质量得到稳定的、量化的保证。②好的单元测......
  • 梦断代码 读书笔记2
    第2章-Agenda之魂第二章,提到了该团队用了很多的方法去提高软件开发的效率速度,想法设法尽可能的去完成预定工作,但是都无一例外的失败了,可知道,这是世界上顶尖的项目开发团队......
  • 《梦断代码》读书笔记
    第0章软件时间作者迷恋于一个开放代码并可以由游戏玩家更改程序的一个游戏,并为在它的基础上创新和增添一些功能而乐此不疲。"HelloWorld"程序能够唤醒每个程序员心中......
  • dart学习笔记
    一、库1、import'dart:xxx';   引入Dart标准库2、import'xxx/xxx.dart';   引入绝对路径的Dart文件3、import'package:xxx/xxx.dart';     引入Pu......
  • Django笔记二之连接数据库、执行migrate数据结构更改操作
    本篇笔记目录索引如下:Django连接mysql,执行数据库表结构迁移步骤介绍操作数据库,对数据进行简单操作接下来几篇笔记都会介绍和数据库相关,包括数据库的连接、操作(包括增......
  • 二级笔记
     1.ifu'\u4e00'<=c<=u'\u9fa5':如果一个字符c的Unicode值在u’\u4e00’和u’\u9fa5’之间,那么它就是一个中文字符。1......
  • 人月神话阅读笔记01
    今天,阅读了人月神话神话中的前两个章节,下面是我的感受 过去我是怎么做的    1.没有尽量追求程序的完美,程序的健壮性不足,如几乎未对输入进行限制2.缺乏合理时间......
  • 有道云笔记安装包双击无反应?
    如题双击无任何反应,以管理员身份也是。以为是版本问题,结果v6和v7都不行。以为是win10自带防护拦截,允许应用通过防火墙,结果还是不行。最后发现是电脑装了火绒,退出后,双击......
  • 「学习笔记」平衡树基础:Splay 和 Treap
    「学习笔记」平衡树基础:Splay和Treap点击查看目录目录「学习笔记」平衡树基础:Splay和Treap知识点平衡树概述Splay旋转操作Splay操作插入\(x\)查询排名为\(k\)......