【6】LCA学习笔记】的更多相关文章

写在前面 目录 一.LCA的定义 二.暴力法求LCA 三.倍增法求LCA 四.树链剖分求LCA 五.LCA典型例题 题目完成度 一.LCA的定义 LCA指的是最近公共祖先.具体地,给定一棵有根树,若结点z既是结点x的祖先,又是结点y的祖先,则称z是x,y的公共祖先.在x,y的公共祖先中,深度最大的一个结点称为x,y的最近公共祖先,记为LCA(x,y) go back 二.暴力法求LCA 暴力法,顾名思义,非常暴力,这里简单介绍一下 先DFS一遍找出每个点的深度,然后先从深度大的往上跳,跳到x,y…
前言 ​ "倍增",作为一种二进制拆分思想,广泛用于各中算法,如\(ST\)表,求解\(LCA\)等等...今天,我们仅讨论用该思想来求解树上两个节点的\(LCA\)(最近公共祖先) "倍增"是什么东西? ​ 倍增就是"成倍增加"的意思,比如\(1\)倍增后变成了\(2\),\(2\)倍增后就变成了\(4\),\(4\)变成\(8\),以此类推... 实现 一直向上LCA ​ 在讲真正的倍增之前,我们先来说说最朴素的\(LCA\),对于需要求解的…
倍增求\(LCA\) 倍增基础 从字面意思理解,倍增就是"成倍增长". 一般地,此处的增长并非线性地翻倍,而是在预处理时处理长度为\(2^n(n\in \mathbb{N}^+)\)的区间值.在这些预处理结果的基础上,我们可以进一步求出任意长度区间的答案. 比如区间最值问题\((RMQ)\)就可以使用倍增解决.对于每个起始点,预处理长度为\(2^n\)的区间最值.之后每段区间都可以以此求出,如: \(f(1,7)=\max(f(1,4),f(3,7))\) 以上是最简单的一个举例.在计…
树链剖分 顾名思义,就是把一课时分成若干条链,使得它可以用数据结构(例如线段树)来维护 一些定义: 重儿子:子树最大的儿子 轻儿子:除了重儿子以外的儿子 重边:父节点与重儿子组成的边 轻边:除重边以外的边 重链:重边连接而成的链 轻链:轻边连接而成的链 链头:一条链上深度最小的点 第一步:进行进行轻重边的划分. 定义size[x]为以x为根的子树节点个数,令v为u儿子中size值最大的节点,那么(u,v)就是重边,其它出边都是轻边 两个重要性质: 1.轻边(u,v)中,Size[v]<size[…
本文原发布时间:\(\texttt{2022-05-21 14:11:52}\) 简介 最经公共祖先 \(\operatorname{LCA}(a,b)=c\),指的是在一棵树上节点 \(a\) 与 \(b\) 之间离两个点最近的一个点 \(c\),使得 \(c\) 是它们的祖先. 比如说,下面这棵树: 那么 \(\operatorname{LCA}(6,7)=2\),注意,不是 \(1\). 例题(P3379 [模板]最近公共祖先) 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近…
最近公共祖先(LCA) 目录 最近公共祖先(LCA) 定义 求法 方法一:树上倍增 朴素算法 复杂度分析 方法二:dfs序与ST表 初始化与查询 复杂度分析 方法三:树链剖分 DFS序 性质 重链 重边 重子结点 剖分方法 剖分作用 复杂度分析 树链剖分拓展 最近公共祖先是树上的概念,不了解树的出门左转百度:树(数据结构名词)_百度百科 定义 假设我们需要求 x 和 y 的最近公共祖先,这里有多种等价的定义 路径x到y上深度最小的点 x和y公共祖先中深度最大的点 x和y在这棵树上距离最近的公共祖…
\(kruskal\) 重构树学习笔记 前言 \(8102IONCC\) 中考到了,本蒟蒻不会,所以学一下. 前置知识 \(kruskal​\) 求最小(大)生成树,树上求 \(lca​\). 算法详解 \(kruskal\) 重构树可以解决瓶颈路问题(如:\(noip2013\) \(d1t3\) 货车运输,可以当做模板题来做,本文中也将此题作为例题): 我们来思考一下 \(kruskal\) 求最小(大)生成树的过程(后文中以最大生成树为例),大致过程可以概述为:将图中所有边从大到小排序,枚…
仙人掌&圆方树学习笔记 1.仙人掌 圆方树用来干啥? --处理仙人掌的问题. 仙人掌是啥? (图片来自于\(BZOJ1023\)) --也就是任意一条边只会出现在一个环里面. 当然,如果你的图片想看起来舒服一点,也可以把图片变成这样子 (图片来源于网络) 2.DFS树 为啥要写这个?--因为这个看起来也可以解决一些仙人掌的问题. 对于一个仙人掌,我们随便构建出一棵生成树. 然后我们就多了一些边--可以叫返祖边,非树边--你想叫啥就叫啥. 因为每条边只会出现在一个环中, 所以每一条返祖边覆盖了树中…
Day 4 学习笔记 各种图论 图是什么???? 不是我上传的图床上的那些垃圾解释... 一.图: 1.定义 由顶点和边组成的集合叫做图. 2.分类: 边如果是有向边,就是有向图:否则,就是无向图. 平常的图一般都有标号,我称之为标号的图(废话)有序图,如果没有标号,就称之为无序图(没标号的图) 注意有向图和无向图转换之后可能不同,然后有序图和无序图转换之后也不同. 3.存储方式 1.基础方式:邻接矩阵 优点:O(1)查询, 缺点:O(n^2)存储 这个图很好的 解释了邻接矩阵的情况. 如果是有…
有丶难,学到自闭 参考的文章: zcysky:[学习笔记]dsu on tree Arpa:[Tutorial] Sack (dsu on tree) 先康一康模板题吧:CF 600E($Lomsat$ $gelral$) 虽然已经用莫队搞过一遍了(可以参考之前写的博客~),但这个还是差距挺大 我们如果对于每个节点暴力统计答案,是$O(N^2)$的复杂度:最坏情况下整棵树是一条链,对于每个节点的统计平均下来是$O(N)$的 具体是怎么做的呢? 对于以当前节点$x$为根的子树,我们建立$cnt$和…