
算法笔记
在此记录抄写一些算法笔记中实用的模板等等...
hjl_heart
请多指教~
展开
-
最小生成树——克鲁斯卡尔算法
kruskal(克鲁斯卡尔)算法,采用了边贪心的策略,其思想及其简洁,理解难度比prim要低很多。 kruskal算法的基本思想为:在初始状态时隐去图中的所有边,这样图中每个顶点都自成一个连通块。之后执行下面的步骤: ① 对所有边按边权从小到大进行排序。 ② 按边权从小到大测试所有边,如果当前测试边所连接的两个顶点不在同一个连通块中,则把这条测试边加入当前最小生成树中;否则,将边舍弃。 ③...原创 2020-04-18 14:51:00 · 448 阅读 · 0 评论 -
最小生成树——普里姆算法
最小生成树是在一个给定的无向图G(V, E)中求一棵树T,使得这棵树拥有图G中的所有顶点,且所有边都是来自图G的边,并且满足整棵树的边权之和最小。 求解最小生成树一般有两种算法,即prim算法和kruskal算法。本文主要讲解prim算法。 prim算法基本思想: 对图G(V,E)设置集合S来存放已被访问的顶点,然后执行n次下面的两个步骤(n为顶点个数): 1.每次从集合V-S(即未被访问...原创 2020-04-10 17:02:15 · 1047 阅读 · 0 评论 -
递推题——错排公式
这几天都做到了递推题,而且都用到了错排公式,所以在此记一下(不然我脑子里根本记不住,蠢哭...) 以HDU 2048为例,请看题: em...由于本人一点也不擅长递推题,所以直接把别人的分析抄上来吧....(侵权即删) 若有n张票,则其所有的排列一共有= n! 种排列方式。即所求问题的分母是n! 现在的问题就是n张票的错排方式有多少种? 1.首先我们考虑如果n-1个人拿的都不是自...原创 2020-03-20 14:40:35 · 454 阅读 · 0 评论 -
HDU 2063过山车 ——二分图最大匹配问题
在HDU 2063 过山车中,我们遇到的是二分图最大匹配问题。那么什么是二分图最大匹配呢?我找了很多资料,发现下面的博主写的很详细,在此贴上文章链接。 https://blog.csdn.net/qq_38956769/article/details/80238896 请务必先看懂文章再来做这道题。 下面是我看懂后写下的AC代码: #include<iostream> #in...原创 2020-03-19 12:20:46 · 160 阅读 · 0 评论 -
并查集算法模板
并查集支持两个操作:1.合并,即合并两个集合;2.查找,即能判断两个元素是否在一个集合内 并查集基本操作: 1.初始化 for(int i = 0; i < n; i++){ father[i] = i; //在并查集使用前,先让其为自身。因为一开始每个元素都是独立的一个集合 } 2.查找 查找可以用递推或递归实现,主要代码如下: //递推实现 int f...原创 2020-03-08 17:45:02 · 166 阅读 · 0 评论 -
最短路径之佛洛伊德算法
Floyd算法(即佛洛伊德算法)用来解决全源最短路径问题,即对给定的图G(V,E),求任意两点u,v之间的最短路径长度,时间复杂度是O(n^3)。由于时间复杂度是O(n^3),所以顶点数n一般限制在200以内,因此使用邻接矩阵来实现Floyd算法。 Floyd算法基于这样一个事实(要理解此算法最好理解一下此处):如果存在顶点k,使得以k作为中介点时顶点i和顶点j的当前最短距离缩短,则使用顶点k作...原创 2020-02-06 08:49:32 · 511 阅读 · 0 评论 -
最短路径之迪杰斯特拉算法模板(二)
上次在最短路径之迪杰斯特拉算法模板(一)中提到上个模板只能适用于最短路径唯一的情况。有时算法竞赛题目会碰到两条及两条以上可以到达最短距离的路径,题目就会给出一个第二标尺(第一标尺是距离),要求在所有最短路径中选择第二标尺最优的一条路径。常见的第二标尺有: 1. 给每条边再增加一个边权(例如花费),然后要求在最短路径有多条时要求路径上的花费之和最小。 2. 给每个顶点增加一个点权(例如每个城...原创 2020-02-04 08:54:05 · 310 阅读 · 0 评论 -
最短路径之迪杰斯特拉算法模板(一)
最短路径是图论中一个很经典的问题:给定图G(V,E),求一条从起点到终点的路径,使得这条路径上经过的所有边的边权之和最小。即,对任意给出的图G(V,E)和起点S、终点T,如何求从S到T的最短路径。 这里简单说一下迪杰斯特拉算法(Dijkstra)解决单源点最短路径问题,即给定图G和起点S,通过算法得到S到达其它每个顶点的最短距离。 基本思想: 对图G(V,E)设置集合S,存放已被访问的顶点,...原创 2020-02-03 18:19:05 · 510 阅读 · 0 评论