并查集
Joey丶sunk
古今成大事者 不惟有超世之才 亦必有坚忍不拔之志
展开
-
Corporative Network UVA - 1329 加权并查集
贴出来做反面教材 这个代码蠢得不行,,,处在超时的边缘(好多浪费时间的点)下篇博文还是这个题,会给出直接检索的代码 下下篇代码将给出压缩路径的代码,耗时极短,,,#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <set>#include <原创 2017-08-18 14:58:08 · 234 阅读 · 0 评论 -
Corporative Network UVA - 1329 加权并查集
可能是数据水点,,直接查找都不会错 f [ i ] 代表 i 的 父结点, d [ i ] 表示 i 到 父结点的距离,每次进行查找下篇博文 给出 压缩路径的做法,,耗时比较少,可应对更大数据量#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <原创 2017-08-18 15:02:14 · 195 阅读 · 0 评论 -
Corporative Network UVA - 1329 加权并查集(压缩路径优化)
比之上两篇博文,,这一篇是优化版 每次更新的时候 d [ i ] 表示 i 到根结点的距离,并且 f [ i ] 表示的不再是 i 的父节点,而是根结点,起到了压缩路径的目的 下次更新的时候更加快速#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#includ原创 2017-08-18 15:05:59 · 277 阅读 · 0 评论 -
SGU - 449 Dendrograms 并查集+贪心构造
题意:比较难理解,直到我看题解之前,都没能得出明确的题意。总结题意后得到: 给出m个集合,每个集合中的元素必须挨着,因为原题说 首先要保证结构清晰,也就是说集合之间不能有交叉的连线;思路:虽然我没能弄清具体的题意,但是也想到了从最下面对集合进行并查集操作,每个集合保证字典序最小即可,从下往上实现并查集操作可以达到结构清晰的目的,不会出现相交的情况,(其实也会有某个元素同时在多个原创 2017-11-27 13:55:52 · 331 阅读 · 0 评论 -
CodeForces - 982D Shark 思路+带权并查集
题意:给定n长度序列,包含n个不同的数,求一个k使得以小于k的数(或区间)分割的所有区间,区间长度相同的同时,区间的个数尽量多,k尽量小思路:n个数值各不相同,我们能够知道,答案肯定是n个数中某个数+1;这样我们从小到大遍历n个数,同时维护他们在原序列的下标,这样就将原问题转化为:将当前的数(a[i])加入之前的所有数的集合,看下标连续的所有区间的长度是否一样,在更新答案(区间...原创 2018-08-07 17:50:37 · 262 阅读 · 0 评论 -
HDU - 5441 Travel 并查集+离线查询
题意:略; 思路:首先对于能连通的点之间可以相互到达,对于给定的某个限定,我们可以把可行的路径找出来,然后计算每个连通块能相互到达的点对,然后加起来但是这样复杂度太大,所以我们把q个查询离线出来,从小到达排序,然后用并查集维护每个连通块,以及他们的大小,可以得到答案; #include <iostream>#include <algorithm...原创 2018-08-17 10:16:27 · 162 阅读 · 0 评论 -
Gym - 101550A A - Artwork 并查集
题意:给定 n*m 的表格,开始全为空,然后每次给定一行或者一列涂黑,然后问当前白色方格的块数思路:将每次染黑的操作离线,涂黑的方格每次加一,然后从后往前,将重新变白的格子用并查集维护一下,每次只要维护其上下左右四个方向合并就行 #include<bits/stdc++.h>using namespace std;typedef long long ll...原创 2018-10-10 21:42:52 · 194 阅读 · 0 评论 -
L2-024 部落 (25 分) 并查集
需要知道总人数和不想交部落数首先并查集,把每一组的人和在一起,然后两个set分别表示所有人id和部落代表的id#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e4 + 7;int n;int f[maxn];vector<int&g...原创 2019-03-22 10:54:38 · 449 阅读 · 0 评论