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

树链剖分

时间:2024-08-10 11:27:02浏览次数:10  
标签:剖分 LOJ DFS 树链 例题 节点

前置知识

时间戳

在树的\(DFS\)中,以每个节点第一次被访问的顺序,依次给予\(N\)个点\(1-n\)的标记,通常用\(dfn[x]\)表示\(x\)号节点的时间戳。

\(DFS\)序

进行\(DFS\)时,对每个节点进入递归后以及回溯前各记录一次该点编号,最后产生\(2-n\)的序列即是\(DFS\)序,可设\(L[X]\)和\(R[X]\)表示\(X\)两次出现位置。

多用于把树上问题转化成序列问题。

性质

任何节点编号在\(DFS\)序中都会出现两次

例题1:LOJ 144.

例题2:LOJ 145.

例题(?)3:LOJ 146.

例题4:LOJ 147.

广告:树状数组好题P3374,P3368,T307782

标签:剖分,LOJ,DFS,树链,例题,节点
From: https://www.cnblogs.com/WYTRL/p/18352108

相关文章

  • Open3D 三维重建-Delaunay Triangulation (德劳内三角剖分)
    目录一、概述1.1原理1.2实现步骤1.3应用二、代码实现2.1关键函数2.2完整代码三、实现效果3.1原始点云3.2重建后点云Open3D点云算法汇总及实战案例汇总的目录地址:Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客一、概述        德劳内三角剖......
  • 树链剖分
    定义把树剖成一条条不相交的链,对树的操作就转化成了对链的操作概念重儿子:对于每一个非叶子节点,它的儿子中以那个儿子为根的子树节点数最大的儿子为该节点的重儿子轻儿子:对于每一个非叶子节点,它的儿子中非重儿子的剩下所有儿子即为轻儿子重边:连接任意两个重儿子的边叫做重......
  • MATLAB生成各类区域网格剖分
    一、双洞模型代码:hg=[1111111120-20010-10-20210-10020-2012120-2012101111000000001111000000000000111122221111];ug=[1111010-1......
  • 二叉树链式结构代码讲解与实现
    本片将续之前的文章二叉树的概念进行二叉树基本操作的实现,二叉树oj题将在下篇文章讲解。目录a.创建二叉树代码:一、二叉树的遍历1.1前序、中序以及后序遍历代码:如图:(前序遍历递归图解)测试代码:二、节点个数以及高度2.1 二叉树节点个数思想:要求二叉树的总节点个数,左......
  • MATLAB: 使用Delaunay三角剖分构建点云网格
    在计算机图形学和计算几何学中,Delaunay三角剖分a是一种常用的方法,用于将点云数据转换为三角形网格,MATLAB提供了内置函数来执行Delaunay三角剖分,并生成适用于点云可视化和分析的三角网格,本文将介绍如何使用MATLAB进行点云的Delaunay三角剖分,并提供相应的源代码。步骤一:导入点云......
  • 树链剖分
    P3379【模板】最近公共祖先(LCA)dfs1:处理一个点的深度、父结点、子树大小,重儿子。dfs2:记录每个点的最顶部。query:哪个top的深度小跳哪个。#include<bits/stdc++.h>usingnamespacestd;constintN=500010,M=1000010;structedge{intto,next;}e[......
  • 长链剖分笔记
    与轻重链剖分相似.dfs1:高度\(h\)、\(son\);dfs2:\(top\).性质1:到根最多\(O(\sqrtn)\)条轻边.(证明:长链长度最坏情况:1,2,3...)性质2:\(x\)的\(k\)级祖先\(y\)所在的长链长度\(\gek\).(证明:若非,则\(y-x\)是一条更长的链,矛盾.)树上\(k\)级祖先\(O(n\logn)-O(1)\):......
  • 树链剖分
    引言第一次接触树链/重链剖分的时候还是学习\(Lca\),没系统性的看过剖分,今天刚重新学习了一下,还是比较神奇的,没想到一个树形结构能有这么多种神奇的操作,总的来说,树链剖分还是比较重要的一个策略正文定义先给出图示首先我们给出以下几个定义:重儿子,对于一个......
  • [学习笔记] 长链剖分 - 图论
    长链剖分字面意思,不同于重链剖分,每次选取最长的树链进行剖分,直到剖完为止。其原理和重链剖分相似。建议学习长链剖分前,先学习重链剖分。重链剖分能做的,长链剖分都能做(当然不包括找重儿子),长链剖分还能以\(O(nlogn)-O(1)\)的优秀复杂度找到\(k\)级祖先(当前节点的第\(k\)个......
  • 树链剖分笔记
    树链剖分:可以把路径分割成\(logn\)个区间。概念:重/轻儿子:当前节点的子节点中子树最大的子结点称为该节点的重儿子,其余都为轻儿子重/轻边:当前节点到重儿子的边称为重边,到轻儿子的边称为轻边重链:由重边构成的极大路径->区间问题好解决,考虑序列化,链不就变成区间了......