图论
文章平均质量分 83
RadiumYang
ACM退役打牌选手
展开
-
LCA之倍增法(例题:POJ1330)
LCA之倍增法最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。除去朴素算法,LCA还可以用倍增法来求,倍增法在算法中的应用还是比较多的,可以用来求ST表(区间最大最小值),还可以用来求LCA。其中求LCA的方法如下:整体流程预处理用BFS或者DFS处理deg[i]:结点i的深度fa[i...原创 2019-10-14 22:53:24 · 302 阅读 · 0 评论 -
Magical Girl Haze(2018南京网络赛L题,分层图最短路)
南京网络赛 - LMagical Girl HazeThere are N cities in the country, and MM directional roads from u to v(1≤u,v≤n). Every road has a distance ci. Haze is a Magical Girl that lives in City 1, she can choose ...原创 2019-08-28 21:59:27 · 226 阅读 · 0 评论 -
LCA之朴素求法(例题:HDU2586)
LCA之朴素求法最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。求LCA有很多很多的办法,最简单的就是朴素求法:每次找深度比较大的那个点,让它向上跳。显然在树上,这两个点最后一定会相遇,相遇的位置就是想要求的 LCA。这个极其暴力的做法,复杂度为O(n),我们来尝试一下吧。How far aw...原创 2019-08-21 18:35:43 · 387 阅读 · 0 评论 -
POJ3014(最小覆盖点;匈牙利算法)
匈牙利算法需要知道的知识点:最小覆盖点==最大匹配关于匈牙利算法的详解,可以看我的另外一篇博文。例题:AsteroidsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 27787 Accepted: 14897DescriptionBessie wants to navigate her spaceshi...原创 2019-05-05 22:24:35 · 262 阅读 · 0 评论 -
匈牙利算法(二分图最大匹配;例题:HDU1083)
匈牙利算法前导知识什么是二分图?设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图简单的说就是有两个集合的点,每个集合中的点只能和另外一个集合中的点相连。链式前向星一种存图的数据结构,相对不好写但是速度较快。...原创 2019-05-05 20:50:15 · 1257 阅读 · 0 评论 -
Dijkstra算法(最短路;例题HDU2112)
Dijkstra算法:求单源最短路的算法。主要步骤:1.定义一个dis数组记录起始点到每个点的距离,初始化时不能到达的记为inf(一般用0x3f3f3f3f)。tip:关于inf,使用0x3f3f3f3f有两个好处,一是初始化可以用memset,二是inf+inf不会爆int2.找到离起始点最近的节点从这个点松弛,并标记3.松弛,如果出现s->m >s->k...原创 2018-09-03 23:34:09 · 1911 阅读 · 0 评论 -
一次失败的做题经历(HDU2112)
为了填坑,补起了三个月前的图论,有一道dijkstra的题目WA了6次还没过,拿出之前的代码,准备分析一下哪里出现了问题。看完题目,这就是一道比较基础的单源最短路的题,但是为什么我过不了呢???很奇怪的我照着之前的代码重构了一遍结果还是WA了,WTF???WA的我怀疑人生,开始看起了题解,还是没有解决问题。突然我灵光一现,发现了问题所在。问题是在没有结束输入的时候就continue了,详见代码。...原创 2018-09-02 21:35:26 · 825 阅读 · 0 评论 -
字典树(tire tree,例题:HDU1247,HDU1251,HDU4825)
字典树(tire tree):把字母存在树中,其中一条子链(从根节点开始)就是一个单词。 核心代码(主要三部分:结构体,插入,查询):1.创建结构体struct node{ //isEnd是否是最后一字母 //也可以是别的,比较灵活 int isEnd; //此处为26个字母(如果更多的话可以增加) struct node *...原创 2018-08-25 23:31:09 · 527 阅读 · 0 评论 -
最大流自用模板(例题:HDU1532)
三种模板:Edmonds_Karp,Dinic,SAP例题:Drainage Ditches(HDU1532)Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22365 Accepted Submission(s): 1...原创 2018-08-30 17:36:03 · 153 阅读 · 0 评论 -
Floyd算法(最短路;例题UVA10048)
Floyd算法:求最短路的一种算法(最暴力的方法)复杂度O(n3)特点:速度慢,但是任意起点的(与Dijkstra不同),程序不难,但很多题目都是变式,需要较深的理解(原理是动态规划)标程:#include <cstdio>#include <iostream>#define INF 0x3f3f3f3fusing namespace std;int ...原创 2018-06-05 23:57:16 · 1252 阅读 · 0 评论 -
Kruskal算法(最小生成树;例题:HDU1233)
Kruskal:求最小生成树的一个算法。需要了解的知识:并查集(https://mp.csdn.net/postedit/79661568)具体步骤:将边按照价值排序(贪心思想)如果这两个边不通,利用并查集将两个边并起来 加上边的权值例题:还是畅通工程Time Limit: 4000/...原创 2018-05-29 23:15:13 · 897 阅读 · 0 评论 -
Tarjin算法(例题:第八届蓝桥杯国赛C语言B组第4题)
虽然蓝(bao)桥(li)杯已经结束了,但是之前练习的时候做的一个题让我学到了一个新的算法——Tarjin算法。例题:发现环(第八届蓝桥杯国赛C语言B组第4题)小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了...原创 2018-05-29 21:10:50 · 309 阅读 · 0 评论 -
Prim算法(最小生成树;例题:nyoj38)
Prim:求最小生成树的另一个算法 还可以用Kruskal(https://blog.csdn.net/Radium_1209/article/details/80503384)与Kruskal的不同:Kruskal是加边,而Prim是加点具体步骤:以任意点(一般为第一个点)为起点 找到能以最小权能到达的点加入已访问点集合 ...原创 2018-06-04 00:27:12 · 3586 阅读 · 0 评论 -
并查集
例题:C. Rumortime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputVova promised himself that he would never play computer games... But recently Firestorm...原创 2018-03-22 23:32:54 · 277 阅读 · 0 评论 -
拓扑排序
拓扑排序(topsort)核心思想:不停找入度为零的点不断删去,并更新其他节点入度直到为空。适用范围:一些满足一定先后关系的活动排序。John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task isonly possible if other tasks hav...原创 2018-04-11 00:45:44 · 281 阅读 · 0 评论 -
欧拉回路
例题:欧拉回路Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17034 Accepted Submission(s): 6579Problem Description欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点...原创 2018-04-11 00:21:33 · 154 阅读 · 0 评论