首页 > 其他分享 >浅谈树链剖分

浅谈树链剖分

时间:2022-10-06 14:34:57浏览次数:48  
标签:浅谈 剖分 树剖 连向 树链 节点

树链剖分是把一棵树分割成若干条链,以便于维护信息的一种方法,其中最常用的是重链剖分(Heavy Path Decomposition,重路径分解),所以一般提到树链剖分或树剖都是指重链剖分。除此之外还有长链剖分和实链剖分等,本文暂不介绍。

本质思想是把树剖成可以用线性结构存储的结构,然后可以用数据结构维护,这样做

  • 一来为树上操作节省了不少时间
    比如找LCA,一次查询时间复杂度上限为 \(O(\log n)\)

  • 二来一些路径的操作可以转换为区间维护
    最经典的就是与线段树配合 产生强大的合力 进行路径或子树上的修改、查询

我们定义树上一个节点的子节点中子树最大的一个为它的重子节点,其余的为轻子节点。一个节点连向其重子节点的边称为重边,连向轻子节点的边则为轻边。如果把根节点看作轻的,那么从每个轻节点出发,不断向下走重边,都对应了一条链,于是我们把树剖分成了 条链,其中 是轻节点的数量。

标签:浅谈,剖分,树剖,连向,树链,节点
From: https://www.cnblogs.com/ycw123/p/16757564.html

相关文章

  • 浅谈JVM模型以及Class文件是怎么被加载的
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档@目录前言一.什么是JVM二、JVM类加载机制1.类加载的概念2.类加载具体流程3.类加载器4.双亲委派机制4.1......
  • 浅谈 Golang 插件机制
    我们知道类似Java等半编译半解释型语言编译生成的都是类似中间态的字节码,所以在Java里面我们想要实现程序工作的动态扩展,可以通过Java的字节码编辑技术([[动态代理#A......
  • 树链剖分学习笔记(未完)
    思想树链剖分用于将树分割成若干条链的形式,以维护树上路径的信息。具体来说,将整棵树剖分为若干条链,使它组合成线性结构,然后用其他的数据结构维护信息。重链剖分原理首......
  • P3384 【模板】轻重链剖分/树链剖分
    【模板】轻重链剖分/树链剖分题目描述如题,已知一棵包含\(N\)个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作:1xyz,表示将树从\(x\)到\(y\)结点......
  • 痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT10xx系列MCU外接24MHz晶振的作用。痞子衡之前写过一篇关于时钟引脚的文章《i.MXRT1xxx系......
  • webpack 浅谈
    webpack是什么是一个模块化打包工具,分析我们的项目结构,将不同的资源和文件,进行打包,合并在一个文件里。webpack的作用读取文件,解析文件,处理文件,编译文件,打包文件并合并......
  • 【luogu P6779】rla1rmdq(分块)(树链剖分)
    rla1rmdq题目链接:luoguP6779题目大意给你一个n个点的有根树,根给出,和一个值域在1~n的数组。然后m次操作,每次对于一个数组的区间l~r,把它们的值都变成格子树上父......
  • 浅谈 MySQL 连表查询
    浅谈MySQL连表查询连表查询是一把双刃剑,优点是适应范式,减少数据冗余;缺点是连表查询特别是多张表的连表会增加数据库的负担,降低查询效率.简介连表查询就是2......
  • 浅谈Git架构和如何避免代码覆盖的事故
    浅谈Git架构和如何避免代码覆盖的事故Git不同于SVN的地方在于,Git是分布式的版本管理系统,所有的客户端和服务器都保存了一份代码,涉及到仓库仓之间的同步,所以处......
  • 浅谈学习方法
    一、软件/环境配置1.1工具/软件的使用像IDE集成开发环境、Navicate数据库连接工具、VSCode代码编辑器、VMWareWorkStation虚拟机、PostmanAPI调试工具等一众工具,要想熟......