
-------------各类总结-------------
YYyyCCCcccBb
觉得为时已晚的时候,恰恰是最早的时候。
展开
-
并查基类型总结
暑期ACM第二练--并查集第一类:普通并查集: 感觉学会模板,套模板,必过,超时的话就加点优化,数据过大就加优化,init()以及最大值处是优化的地方,以及数组的个数(自身经历,开过大的数组会耗时);第二类:带权并查集: http://www.cppblog.com/yuan1028/archive/2011/02/13/139990.html 看了下这个博客原创 2016-07-22 17:52:34 · 373 阅读 · 0 评论 -
codeforces记录
2016.10.16Codeforces Round #377 (Div. 2)A.B可以过。C题读错题。读完题也不会。F题读完题也不会。等出题解记录题的类型原创 2016-10-16 20:07:27 · 432 阅读 · 0 评论 -
BFS,DFS等搜索题目总结
(先说明,这篇博客记载了一些比较水的,入门的搜索,如果想找高端点的,这篇可能会让各位失望的喔!~待啥时候这篇博客写丰富了再把这句话删了)dfs题目记录:dfs-POJ-2488-A Knight's Journey(骑士的游历,估计是各位最入门,最经典的一个dfs算法了吧!)DFS-PATA-1003(模板题)DFS-PATA-1004. Counting Leaves (原创 2016-11-01 19:04:40 · 1551 阅读 · 1 评论 -
prim算法--prim算法求次小生成树--prim算法求限制K度生成树
在正常求次小生成树的时候相信大家都喜欢kruskal,毕竟因为太大的图,尤其是稀疏图,prim算法并不实用,而且占内存太多,有可能不让开。但是在解决次小生成树和限制度生成树时候prim算法不失为一种很好的方法,因为这两种情况空间复杂度,尤其是图的大小都并不太大。从一开始学了prim算法,再到拿prim算法解决次小生成树的变形,直到今天彻底搞懂prim算法求解限制k度最小生成树的问题。我感觉无论原创 2016-11-10 15:26:14 · 1773 阅读 · 0 评论 -
次小生成树模板-prim算法
prim算法的次小生成树构造: 与原版求最小生成树的prim算法相比, 在求解次小生成树时加入了maxx这个数组,也是最为核心的一个,以及一个connect数组下面重点说一下这两个新的内容。connect数组,标志这connect[i][j] 从i到j有边,(这个在输入的时候就可以处理),其次,我们在求解最小生成树时候index点,也是这步需要添加到已经遍历到树中的点。我原创 2016-11-08 17:11:49 · 2800 阅读 · 0 评论 -
限制度生成树
思路:对于一个限制Vo点K度生成树的题来说,首先把他的Vo点所有的边都删除,对于其他的点进行初步prim建立多个最小生成树,并且存放最大边值,之后再对于这些最小生成树进行向Vo点连边。国家集训队论文,讲得很好http://wenku.baidu.com/view/8abefb175f0e7cd1842536aa.html#include#include#include#i原创 2016-11-09 21:44:40 · 557 阅读 · 0 评论 -
最短路径dijkstra-与最小生树prim算法对比
两个算法代码思想极其相似,在这里总结下!防止以后乱套。。prim算法是解决最小生成树问题,也就是权值最小问题。而 dijkstra算法解决的是最短路径问题。二者相似的点在于都是解决图的边的算法。并且最关键的特点是都是从一点(起点)开始,进行向外其他未遍历过点的拓展。区别:dis数组存放的东西不同prim算法:dis数组更新的是-----------从下步可以拿到原创 2016-09-26 19:56:21 · 1976 阅读 · 2 评论 -
无向最小生成树(prim 与krusckal)总结
之前学的时候一直感觉是两个算法没什么区别,今天总结一下:大体思路:prim算法是做N次确定每一个点,使其构成最小生成树。而相对比的是krusckal算法是做n-1次,找到N-1条最短边,以此来确定N个点。假设给定N个点,以及M条边,既然是无向的,且有可能使其连通,那么边数M必定是 N-1下面给出代码和具体差别的思路想法:1.prim算法(确定点)算法的思想:标记当前原创 2016-09-23 19:44:37 · 1088 阅读 · 0 评论 -
dijkstra与spfa(bellman-Ford)
一丶Dijkstra:对于每一个点都进行松弛,一共松弛n-1次。每次都拿当前点,对于未加入图中的点进行松弛,核心代码: for(int i=1;i<=n;i++) { minn=INF; for(int j=1;j<=n;j++) { if(!vis[j]&&dis[j]<minn )原创 2016-11-25 16:09:25 · 452 阅读 · 0 评论