
图论
文章平均质量分 78
RWLinno
不经常逛优快云,合作请联系我邮箱rwlinno@gmail.com,个人主页:https://rwlinno.github.io/
展开
-
【算法竞赛学习笔记】网络流基础
title : 网络流基础date : 2022-3-16tags : ACM,图论author : Linno网络流网络流是一个有向图模型,其拥有源点和汇点,图上边权称为容量,在不超过容量的情况下源点流出的值最终能从源点流向汇点的多少称为流量。最大流在网络流最常见的问题就是最大流,即从源点出发,流出的流量足够多,求能够流入汇点的最大量。下面要介绍用于解决这一问题的Ford-Fulkerson算法。最大流最小割定理所谓“割”,就是从网络中去掉某些边后,剩下两个不连通的分别包含源点和汇点.原创 2022-05-31 14:09:02 · 603 阅读 · 0 评论 -
【算法学习笔记/图论】差分约束系统及例题
title : 差分约束系统date : 2022-5-18tags : ACM,图论author : Linno差分约束系统差分约束系统是一个特殊的n元一次不等式组,每项不等式约束条件都可以写成xi≤xj+ckx_i\le x_j+c_kxi≤xj+ck的形式,这与单源最短路的三角形不等式类似,因此可以将每个变量xix_ixi看成图的一个顶点,边权代表两变量之间的大小关系来建立模型,通过跑最短/长路,可以解决该不等式组的最小/最大解的问题。在实际问题中,我们会遇到建图存在负环,即解不.原创 2022-05-19 12:23:01 · 346 阅读 · 0 评论 -
【算法竞赛学习笔记】Purfer序列
title : Pruferdate : 2022-5-9tags : ACM,计数,图论author : Linno文章目录Purfer序列性质对树建立Prufer序列堆O(nlogn)线性构造对Prufer序列构造树[【模板】Prufer 序列](https://www.luogu.com.cn/problem/P6086)[UVA10843 Anne's game](https://www.luogu.com.cn/problem/UVA10843)Purfer题解基尔霍夫矩阵图连通方案数.原创 2022-05-09 22:16:04 · 521 阅读 · 0 评论 -
【算法竞赛学习笔记】弦图和区间图
title : 弦图date : 2022-4-22tags : ACM,图论author : Linno弦图任意长度大于3的环都有一个弦的图称为弦图。很多在一般图上的NP-Hard问题在弦图中都有优秀的线性时间复杂度解法。基本概念弦:连接环中不相邻两点的边。子图:点集和边集均为原图点集和边集的子集的图。团:完全子图,即满足任意两点都恰有一条边相连的子图。导出子图:点集为原图点集子集,边集为所有满足两端点均在选定点集中的图。最大独立集:最大的点集使得点集中任意两点都没有边直接相连。.原创 2022-04-23 21:32:47 · 2610 阅读 · 0 评论 -
【算法竞赛学习笔记】状压DP
title : 状压DPdate : 2022-3-5tags : ACM,图论,动态规划author : Linno状压DP状态压缩,是利用二进制数的性质对问题进行优化的一种算法,经常与搜索和DP结合。状态压缩动态规划,俗称状压DP。在动态转移的过程中用二进制数表示状态,并利用位运算的性质可使得枚举方案大大减少。前置知识位运算基础判断数字x二进制下第i位是不是1。if(((1<<(i-1))&x)>0)将数字x二进制下第i位改成1x=x|(1<.原创 2022-04-11 21:02:38 · 608 阅读 · 0 评论 -
【算法竞赛学习笔记】树分治
title : 树分治date : 2021-8-25tags: ACM,图论author : Linno树分治树分治是再树形结构上进行分治的一种操作,主要思想是除去树中的某些对象,使原树被分解成若干个互不相交的部分,由此可以解决许多以路径为询问对象的问题。一颗树上的路径有经过根节点的或者不经过根节点的两种。若我们把根节点删掉,则可以生成若干棵以原根节点的儿子为根节点的子树。问题引入给一颗带边权树,统计最短距离不超过k的顶点的对数。解法假设我们按重心把树分成若干子树,那么符合条件的.原创 2022-03-16 09:22:12 · 590 阅读 · 0 评论 -
2021暨南大学轩辕杯ACM程序设计新生赛题解
title : 2021暨南大学轩辕杯ACM程序设计新生赛date : 2021-12-12tags : ACM,练习记录author : Linno题目链接:https://ac.nowcoder.com/acm/contest/26008进度:10/13总结难度比较适合新生,基本上都有出题,而难题上限也很高,共5道题没人过,最高过题数8道。我不是出题人,如果大家没有需要的话这份题解不会更了。排在前面有很多大佬啊,如果下面题解有问题希望可以对我提出指正。A.残秋挽歌题意给一个.原创 2021-12-12 21:01:30 · 2281 阅读 · 3 评论 -
【算法竞赛学习笔记】后缀自动机SAM-超经典的字符串问题详解
title : 后缀自动机date : 2021-11-11tags : ACM,字符串author : Linno前置知识KMP,Trie,AC自动机等字符串基础DFA(有限状态自动机)后缀自动机(Suffix automaton ,SAM)定义字符串s的SAM是一个接受s的所有后缀的最小DFA(确定性有限自动机)。直观上SAM是给定字符串的所有字串的压缩形式。而构造的时间复杂度和空间复杂度仅为O(n)O(n)O(n)。一个SAM最多有2n-1个节点和3n-4条转移边。符号定义.原创 2021-11-20 20:23:20 · 1823 阅读 · 0 评论 -
【算法竞赛学习笔记】拓扑排序与关键路径-图论基础
title : 拓扑排序与关键路径date : 2021-8-15tags : ACM,图论author : Linno拓扑排序对一个有向无环图G中所有顶点排成一个序列,使得图中任意一对顶点u和v,若边(u,v)属于E(G),那么u再线性序列中出现在v之前。这样的线性序列称为满足拓扑排序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。实现方法//BFS:寻找入度为0的点,把这个点加入队列,在队列中对.原创 2021-11-18 00:19:42 · 339 阅读 · 0 评论 -
【算法竞赛学习笔记】Link-Cut-Tree基础-超好懂的数据结构
titile : Link-Cut-Treetime : 2021-7-21tags : ACM,数据结构author : Linno前置芝士树链剖分平衡树(splay即可)适用范围1、链上求和2、链上求最值3、链上修改4、子树修改5、子树求和(上述五种均可用树链剖分解决)6、换根7、断开树上的一条边8、连接两个点,保证连接后仍然是一棵树思想对每个结点所连的边都分实边和虚边。一个结点最多连出一条向儿子的实边,因此实边会聚集成链。splay维护一条实链。性质所有.原创 2021-11-17 22:05:03 · 657 阅读 · 0 评论 -
【算法竞赛学习笔记】dfs序与树链剖分-超有用的图论详解
title : dfs序与树链剖分date : 2021-8-12tags : 图论,ACMauthor : Linno支持操作在子树上或者是两点路径上的所有节点的求和、修改、查询等操作。具体操作大致为:(1)dfs进行树链剖分处理节点信息;(2)根据dfs序把树拉直然后套数据结构。dfs序把树搞成了“连续的”。一个节点的子树上的节点的时间戳,一定大于这个节点的时间戳且连续。某些链上的时间戳也是连续的。因为dfs序的性质——重链上的时间戳是连续的。树链剖分重链剖分——常用.原创 2021-11-06 17:17:13 · 302 阅读 · 0 评论 -
【算法竞赛学习笔记】树上问题基础-超有用的图论详解
title :树上问题基础tags : ACM,图论date : 2021-11-6author : Linno基本概念树的深度:从树根往下数,叶子节点所在的最大层数称为树的深度。(有教材定义不一样,看题意吧。要区分高度)树的直径:树中两节点距离的最大值称为树的直径。子树大小:对每一个节点的大小都等于左子树大小+右子树大小+1(自己)节点重量:删去该节点后,所有树大小的最大值。即该节点所有子树大小的最大值称为节点重量。求树的直径做法1:两遍dfsconst int N = 1000.原创 2021-11-06 17:04:48 · 540 阅读 · 0 评论 -
【算法竞赛学习笔记】2SAT-超有用的图论详解
title : 2-SATdate : 2021-10-14tags : ACM,图论author : Linno简介SAT指适定性问题,k-SAT表示k-适定性问题。可以证明k>2时,k-SAT是NP完全的,所以一般讨论k=2的情况。思想对于2-SAT问题,本质上是对NP问题的暴力求解。(1)我们可以以每一个变量及其反变量为点进行建图。若x1&x2=0,则连边方式为x1->!x2,x2->!x1,简单来说,如果两变量矛盾,就各自与另一变量的反变量连边,这是非.原创 2021-10-29 00:48:05 · 508 阅读 · 0 评论 -
【算法竞赛学习笔记】圆方树-超有用的图论详解
title : 圆方树date : 2021-10-22tags : ACM,图论author : Linno圆方树是一种将一般图变为树的方法,进而将一般图上的某些问题转化为树上问题。基本概念仙人掌图:不存在边同时属于多个环的无向连通图对于每个环新建一个方点,该方点想换上每一个圆点连边,就构成了圆方树。点双连通图:图中任意两不同点之间都有至少两条点不重复的路径。双连通分量:一个图的点双连通分量是一个极大点双连通子图。在圆方树中,每个点双对应一个方点,原图每个点对应一个圆点,构建.原创 2021-10-29 00:46:00 · 1545 阅读 · 0 评论 -
【算法竞赛学习笔记】基环树-超有用的图论详解
title : 基环树date : 2021-8-29tags : ACM,图论author : Linno简介基环树是一个n个点n条边的图,比树多出现一个环,因此称为基环树。找环对于无向图通过拓扑排序可以找出环上的所有点。void topsort(){ int l=0,r=0; for (int i=1;i<=n;i++) if(in[i]==1) q[++r]=i; while(l<r) { int now=q[++.原创 2021-10-29 00:44:10 · 5029 阅读 · 0 评论 -
【算法竞赛学习笔记】用不着的图论之树哈希
title : 树Hashdate : 2021-10-6tags : ACM,图论author : Linno树哈希应用判断树是否同构思想判断无根树同构的时候,可以比较重心为根的Hash值或者比较每个点为根的Hash值。树哈希的表示方法fx=1+∑y∈sonxfy×prime(sizey)f_x=1+\sum_{y\in son_x}f_y×prime(size_y)fx=1+∑y∈sonxfy×prime(sizey)[NOIP2018 普及组] 对称二叉树题目.原创 2021-10-29 00:41:29 · 354 阅读 · 0 评论 -
【算法竞赛学习笔记】超好懂的斯坦纳树详解!!!
title : 斯坦纳树tags : ACM 图论date : 2021-6-26author : Linno什么是斯坦纳树给定 nn 个点 A1,A2,⋯,AnA1,A2,⋯,An,试求连接此 nn 个点,总长最短的直线段连接系统,并且任意两点都可由系统中的直线段组成的折线连接起来。他们将此新问题称为 斯坦纳树问题。斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种。最小生成树是在给定的点集和边中寻求最短网络使所有点连通。而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网.转载 2021-10-26 13:57:46 · 7117 阅读 · 1 评论 -
【算法竞赛学习笔记】超好懂的最小生成树详解!!!
title : 最小生成树date : 2021-7-30tags : ACM,图论author : Linno最小生成树(MST)什么是最小生成树问题?我们给n个点m条边,选出n-1条边把所有点连起来(默认只有一块),使得边权之和最小,这就是最小生成树(Minimum Spanning Tree)问题。该问题有两种比较常见的作法:kruskal和PrimKruskal步骤基于贪心思想,先把边从小到大排列,然后按顺序选边并且合并每条边相连的两点所在集合(若两点处于同一集合内,则该边不.原创 2021-10-26 13:54:42 · 879 阅读 · 0 评论 -
【算法竞赛学习笔记】超有用的二分图详解!!!
title : 二分图date : 2021-8-19tags : ACM,图论author : Linno基础概念二分图:又称为二部图,如果一个图G=(V,E)的顶点可以分为两个部分,对所有边,其两端点都处于不同的部分,那么这个图就是二分图。若对于图G=(V,E),存在V的一个划分(A,B),使∀(u,v)∈E,都有u∈A,v∈B或者u∈B,v∈A,则称图G为二分图若对于图G=(V,E),存在V的一个划分(A,B),使\forall(u,v)\in E,\\都有u\in A,v\in .原创 2021-10-26 13:59:56 · 801 阅读 · 0 评论