树链剖分
摘要:树链剖分 本质上是将一个树变成多条链,转化成线段树,对树的操作转化成对线段树操作. 树链剖分详解(洛谷模板 P3384) - ChinHhh - 博客园 (cnblogs.com) 模板题: P3384 【模板】轻重链剖分/树链剖分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
阅读全文
posted @
2022-08-23 10:12
naiji
阅读(91)
推荐(0)
图中走t步的路径数(矩阵加速)
摘要:求图中走t步的路径数(矩阵加速) 当图中任意两个点的距离为1时,求点$X$走$T$步到达点$Y$的路径数。 可以构建矩阵A,$A^T$即为走$T$步的情况。 当图中两点的距离不为1时, SCOI2009] 迷路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 两点的距离较小时,可以
阅读全文
posted @
2022-05-11 15:50
naiji
阅读(104)
推荐(0)
最短路径条数
摘要:求最短路径的条数 只局限于边的长度为1这种情况 P1144 最短路计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 初始化ans[s]=1; 求最短路时,更新ans数组 void dij() { for (int i = 1; i <= n; i++) dis[i] = M;
阅读全文
posted @
2022-05-11 15:46
naiji
阅读(85)
推荐(0)
链式前向星
摘要:链式前向星 用数组模拟邻接表vector,本质上和vector是一个东西,只不过是使用数组表示的。 vector使用的是后插入法, 数组模拟时,使用的是前插法。 #include<iostream> #include<cmath> #include<string> #include<deque> #
阅读全文
posted @
2022-01-18 19:45
naiji
阅读(82)
推荐(0)
图论例题
摘要:图论例题 dfs奇偶二次遍历+博弈论。求源点到其他点是否有奇数路径和偶数路径。(dfs) Problem - B - Codeforces 和上面的很像,求源点到其他各点的最短的奇数路径和偶数路径。(bfs) P5663 [CSP-J2019] 加工零件 有向无环图的拓扑排序及拓扑排序的性质。 Pr
阅读全文
posted @
2021-12-15 15:42
naiji
阅读(70)
推荐(0)
分层图
摘要:分层图 基本概念: 求最短路径问题时,从点1到点n的最短路径。有种魔法,使一条路的长度变成$1/2$. 求使用魔法次数不超过k次,从点1到点n的最短路径。 JLOI2011]飞行路线 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) BJWC2012]冻结 - 洛谷 | 计算机科学教
阅读全文
posted @
2021-11-30 22:18
naiji
阅读(122)
推荐(0)
全源最短路径
摘要:全源最短路径 P5905 【模板】Johnson 全源最短路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Johnson 和 Floyd 一样,是一种能求出无负环图上任意两点间最短路径的算法。 1,算法概述 任意两点间的最短路可以通过枚举起点,跑 n 次 Bellman-For
阅读全文
posted @
2021-11-27 19:33
naiji
阅读(148)
推荐(0)
强连通分量+缩点
摘要:强连通分量+缩点 使用tarjan算法求强连通分量,再把强连通分量缩成一个点。 所需的数据结构 int dfn[10004];//遍历到i节点时的时间戳 int low[10004];//i节点不通过父节点可以回溯到的最小时间戳 int book[10004];//表示i是否入栈 stack<int
阅读全文
posted @
2021-11-13 22:29
naiji
阅读(83)
推荐(0)
欧拉回路
摘要:欧拉回路 摘自:欧拉回路基本概念+判断+求解 - 王陸 - 博客园 (cnblogs.com) 1,定义 如果图G(有向图或者无向图)中所有边一次仅且一次行遍所有顶点的通路称作欧拉通路。 如果图G中所有边一次仅且一次行遍所有顶点的回路称作欧拉回路。 具有欧拉回路的图称为欧拉图(简称E图)。具有欧拉通
阅读全文
posted @
2021-11-11 14:10
naiji
阅读(457)
推荐(0)
树的直径
摘要:树的直径 定义 树上所有点的最短距离的最大值。 或者,树上最长的一条路径 算法思想 ①从任意一点P出发,通过DFS寻找离它最远的点Q。 ②再次从点Q出发,通过DFS寻找离它最远的W。 ③直径即为WQ。 【朝夕的ACM笔记】树上问题-树的直径 - 知乎 (zhihu.com)
阅读全文
posted @
2021-11-11 14:09
naiji
阅读(69)
推荐(0)
二分图
摘要:二分图的最大匹配 摘自二分图的最大匹配 - 爱国呐 - 博客园 (cnblogs.com) 一,概念 如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是一个二分图。准确地说:把一个图的顶点划分为两个不相交集 U 和V ,使得每一条边都分别连接U、V中的顶点。如果存在这样的划分,则此图为
阅读全文
posted @
2021-11-11 14:09
naiji
阅读(196)
推荐(0)
树的重心
摘要:树的重心 定义 树的重心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。 性质 树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个重心,他们的距离和一样。 把两棵树通过一条边相连,新的树的重心在原来两棵树重心的连线上。
阅读全文
posted @
2021-11-11 14:08
naiji
阅读(116)
推荐(0)
trajan
摘要:trajan 求割点,桥,最近公共祖先(LCA)tarjan算法和倍增, 求割点: P3388 【模板】割点(割顶) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 求桥: P1656 炸铁路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 求桥和割点是一类问题:
阅读全文
posted @
2021-11-11 11:02
naiji
阅读(160)
推荐(0)
最短路径
摘要:最短路径 单源最短路径: n个点到一个点的最短距离:建立反向图, 方法一, Dijkstra算法:利用贪心思想,(不等处理负权的情况) [dijkstra普通算法](记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)) [dijkstra堆优化算法](记录详情 -
阅读全文
posted @
2021-11-11 10:53
naiji
阅读(159)
推荐(0)
最小生成树
摘要:最小生成树 两种方法: 1,Prim(加点法) 从随便一个点i开始,dis[i]=0,dis[其他点]=无穷, 进行n次循环, 每次找到距离集合最短距离的点k, 更新dis数组,dis数组表示点j到集合的最小距离 若dis[j]>点k和点j的距离,则更新 最后将dis数组求和即为ans 记录详情 -
阅读全文
posted @
2021-11-10 23:03
naiji
阅读(60)
推荐(0)
拓扑排序
摘要:拓扑排序 是对图(有向无环图)中的顶点按照某种先后顺序进行遍历。 拓扑排序的实现: 用一个数组ind[1000],来表示指向第i个节点的边数, 从ind[i]为0的带你开始遍历,删除该节点连接其他节点的边,且其他节点的ind值-1, 该节点结束后,找到下一个ind为0的节点重复上述过程。 整个遍历过
阅读全文
posted @
2021-11-10 23:02
naiji
阅读(68)
推荐(0)