[学习笔记] LCA - 图论】的更多相关文章

Day 4 学习笔记 各种图论 图是什么???? 不是我上传的图床上的那些垃圾解释... 一.图: 1.定义 由顶点和边组成的集合叫做图. 2.分类: 边如果是有向边,就是有向图:否则,就是无向图. 平常的图一般都有标号,我称之为标号的图(废话)有序图,如果没有标号,就称之为无序图(没标号的图) 注意有向图和无向图转换之后可能不同,然后有序图和无序图转换之后也不同. 3.存储方式 1.基础方式:邻接矩阵 优点:O(1)查询, 缺点:O(n^2)存储 这个图很好的 解释了邻接矩阵的情况. 如果是有…
对于图论--虽然本蒟蒻也才入门--于是有了这篇学习笔记\(qwq\) 一般我们对于最短路的处理,本蒟蒻之前都是通过构建二维数组的方式然后对每两个点进行1次深度或者广度优先搜索,即一共进行\(n\)^2遍深度(DFS)或广度优先搜索(BFS)--直到学习了Floyd算法\(qwq\) 先上核心代码\(Code\): for(k=1;k<=n;k++) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(e[i][j]>e[i][1]+e[1][j…
最近公共祖先(LCA) 目录 最近公共祖先(LCA) 定义 求法 方法一:树上倍增 朴素算法 复杂度分析 方法二:dfs序与ST表 初始化与查询 复杂度分析 方法三:树链剖分 DFS序 性质 重链 重边 重子结点 剖分方法 剖分作用 复杂度分析 树链剖分拓展 最近公共祖先是树上的概念,不了解树的出门左转百度:树(数据结构名词)_百度百科 定义 假设我们需要求 x 和 y 的最近公共祖先,这里有多种等价的定义 路径x到y上深度最小的点 x和y公共祖先中深度最大的点 x和y在这棵树上距离最近的公共祖…
竞赛图(tournament)学习笔记 现在只是知道几个简单的性质... 竞赛图也叫有向完全图. 其实就是无向完全图的边有了方向. ​ 有一个很有趣的性质就是:一个tournament要么没有环,如果有环,那么必然有一个三元环.当然,tournament一定没有自环和二元环. ​ 证明的话,开始吧,, ​ 首先我们假定当前的tournament存在一个N元环,那么我们设A,B,C为这个N元环上连续的三个点,那么就会存在AB和BC两条边,又因为是竞赛图,所以一定会存在AC或者CA两者中的一条边.…
点亮技能树行动-- 本篇blog按照分类将网上写的OI知识点归纳了一下,然后会附上蒟蒻我的学习笔记或者是我认为写的不错的专题博客qwqwqwq(好吧,其实已经咕咕咕了...) 基础算法 贪心 枚举 分治 倍增 构造 高精 模拟 图论 图 最短路,次短路 k短路 差分约束 最小生成树 拓扑排序 欧拉图 二分图染色,二分图匹配 最大团,最大独立集 tarjan找scc.桥.割点,缩点 网络流 最大流,最小割,费用流 有上下界的网络流 分数规划 2-SAT 树 LCA 最近公共祖先 树的直径 树的重心…
\(kruskal\) 重构树学习笔记 前言 \(8102IONCC\) 中考到了,本蒟蒻不会,所以学一下. 前置知识 \(kruskal​\) 求最小(大)生成树,树上求 \(lca​\). 算法详解 \(kruskal\) 重构树可以解决瓶颈路问题(如:\(noip2013\) \(d1t3\) 货车运输,可以当做模板题来做,本文中也将此题作为例题): 我们来思考一下 \(kruskal\) 求最小(大)生成树的过程(后文中以最大生成树为例),大致过程可以概述为:将图中所有边从大到小排序,枚…
仙人掌&圆方树学习笔记 1.仙人掌 圆方树用来干啥? --处理仙人掌的问题. 仙人掌是啥? (图片来自于\(BZOJ1023\)) --也就是任意一条边只会出现在一个环里面. 当然,如果你的图片想看起来舒服一点,也可以把图片变成这样子 (图片来源于网络) 2.DFS树 为啥要写这个?--因为这个看起来也可以解决一些仙人掌的问题. 对于一个仙人掌,我们随便构建出一棵生成树. 然后我们就多了一些边--可以叫返祖边,非树边--你想叫啥就叫啥. 因为每条边只会出现在一个环中, 所以每一条返祖边覆盖了树中…
有丶难,学到自闭 参考的文章: zcysky:[学习笔记]dsu on tree Arpa:[Tutorial] Sack (dsu on tree) 先康一康模板题吧:CF 600E($Lomsat$ $gelral$) 虽然已经用莫队搞过一遍了(可以参考之前写的博客~),但这个还是差距挺大 我们如果对于每个节点暴力统计答案,是$O(N^2)$的复杂度:最坏情况下整棵树是一条链,对于每个节点的统计平均下来是$O(N)$的 具体是怎么做的呢? 对于以当前节点$x$为根的子树,我们建立$cnt$和…
[学习笔记]wqs二分/DP凸优化 从一个经典问题谈起: 有一个长度为 \(n\) 的序列 \(a\),要求找出恰好 \(k\) 个不相交的连续子序列,使得这 \(k\) 个序列的和最大 \(1 \leq k \leq n \leq 10^5, -10^9 \leq a_i \leq 10^9\) 先假装都会 \(1 \leq k \leq n \leq 1000\) 的 \(dp\) 做法以及 \(k = 1\) 的子问题 实际上这个问题还可以是个费用流模型: 对于序列中每一个点 \(i\)…
可持久化:支持查询历史版本和在历史版本上修改 可持久化数组 主席树做即可. [模板]可持久化数组(可持久化线段树/平衡树) 可持久化并查集 可持久化并查集 主席树做即可. 要按秩合并.(路径压缩每次建logn条链,会卡爆空间MLE) 主席树节点,维护father(是一个真实下标),维护dep(集合的最大深度), 一个关键函数是query,找到代表实际位置为pos的节点的编号 对于一个版本, 合并:先找到这个两个位置的集合的根节点. 不在同一个集合里的话,就合并. 合并的时候,新建一条链,并且更新…