最短路和最小生成树应该是很早学的,大家一般都打得烂熟,总结一下几个问题 一 dijkstra O((V+E)lgV) //V节点数 E边数 1.算法实现 dijkstra就是建立一个已知单源最短路的点集A,然后不断扩张这个点集。扩张的方法就是在未知最短路径的点集B中维护一个以目前的dis[x]排名( ...
分类:
其他好文 时间:
2018-09-16 18:02:18
阅读次数:
191
Kruskal和prim都是求最小生成树的方法,两种方法都是按照贪心来做的。但是Kruskal是从边的角度入手,prim则是从点的角度入手。prim运用类似Dijkstra的方法来求,Kruskal运用并查集来求。 在复杂度方面,两种算法各有所长。 在稀疏图中,枚举边的Kruskal效率更高,在稠密 ...
分类:
其他好文 时间:
2018-09-15 20:54:45
阅读次数:
180
"传送门" 你会发现第二条规则不存在,因为在形成环之前,这几个城市就已经连通了。所以直接求最小生成树即可。 然后你会发现,边数特别多,所以Kruskal会TLE,并且开邻接表存图会MLE 所以干脆直接Prim了,因为是完全图,所以每个点对其他点都有边,那么直接遍历即可。 ...
分类:
其他好文 时间:
2018-09-09 00:39:49
阅读次数:
137
"$ \rightarrow $ 戳我进POJ原题 " D:Chocolate 总时间限制: 1000ms $ \quad $ 内存限制: 65536kB 描述 Vincent is a chocolate enthusiast and a collector of chocolate since ...
分类:
其他好文 时间:
2018-09-08 21:07:44
阅读次数:
144
"$ \rightarrow $ 戳我进CH原题 " 走廊泼水节 0x60「图论」例题 总时限10 s $ \quad $ 总内存256 MiB 描述 【简化版题意】给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树。 求增加的边的权值总和最小是多少。 ...
分类:
其他好文 时间:
2018-09-08 20:02:33
阅读次数:
198
复习清单,2018.9.8 12点04分 my_pow() 并查集 toporder() 线段树单点更新 字典树 Kmp AC自动机 prim kruskal 二分图 equal(A, A + m, temp); // 判断数组A的前m个元素与数组temp的前m个元素是否相等 java 大数 pyt ...
分类:
其他好文 时间:
2018-09-08 13:11:25
阅读次数:
161
多么痛的领悟! 不要认为Prim不常见就用不到! 和Kruskal一样,Prim算法也是用来求MST的,也是体现了贪心的思想。 不同的是,Kruskal是针对边而言的,Prim是针对点而言的。Kruskal适用于稀疏图,Prim适用于稠密图,更值得一提的是,Prim可以不必保存每条边。 算法思想是, ...
分类:
编程语言 时间:
2018-09-02 23:53:01
阅读次数:
242
P1661 扩散 二分+最小生成树(kruskal使用并查集) 不清楚的题意导致我被坑了qwq,其实间接联通也是允许的。所以可以使用并查集+最小生成树维护 每次二分答案,然后跑一遍最小生成树判断是否联通。 end. ...
分类:
其他好文 时间:
2018-09-02 02:03:27
阅读次数:
133
一道另类生成树 将输入的树的$n 1$条边按从小到大排序,然后$Kruskal$在生成该树的过程中计算新增边的总长。 当在连第$i$条边,设该边的两端点为$x,y$,长度为$z$,分别属于$S_x$和$S_y$两个并查集中。 而为了将树变成完全图,显然要将$S_x,S_y$两个并查集中所有点一一连边 ...
分类:
其他好文 时间:
2018-09-01 23:47:22
阅读次数:
167
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16957 Accepted: 5896 Description Windy has a country, and he wants to build an army to prot ...
分类:
其他好文 时间:
2018-08-31 13:14:29
阅读次数:
113