按秩合并 每次将秩小的合并到秩大的,若相同,秩加 1 。 秩反应的是容纳水平, 秩越高, 容纳水平越高, 这样才能更加均衡地填满. 每次只修改 $O(1)$ 的元素,可以快速撤销。 HDU 5354 分治 + 按秩合并并查集,判断删去任意一条边后,该图是否是二分图。 路径压缩 给序列,每次访问一个区 ...
分类:
其他好文 时间:
2017-11-01 16:36:15
阅读次数:
250
写题一时WA了时间不多了计划还没完成先放下去写道水题好像是正确的选择。 对每个点记录它到当前代表元的距离,初始都为0(到自己)。 合并时之前代表元的距离就等于它要合并的那个集合的size。路径压缩时先加上父亲到代表元的距离,再把父亲换成代表元。 ...
分类:
其他好文 时间:
2017-10-25 01:02:11
阅读次数:
227
class UnionFind{ private: int* parent; int* rank; int count; public: UnionFind(int count){ parent = new int[count]; rank = new int[count]; this->count... ...
分类:
其他好文 时间:
2017-10-22 21:31:18
阅读次数:
132
2710: 过河 Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByteTotal Submit: 32 Accepted:7 Description 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子 ...
分类:
其他好文 时间:
2017-10-21 13:32:11
阅读次数:
167
并查集+路径压缩 parent[MAX_N] //父节点 rank[MAX_N] //树的高度 初始化: 查询根节点: 合并集合: 路径压缩: ①递归: ②非递归: ...
分类:
其他好文 时间:
2017-10-19 21:07:50
阅读次数:
265
1 //递归版路径压缩 2 int find(int x){return x==Father[x]?x:Father[x]=find(Father[x]);} 3 4 void Union(int x,int y){ 5 int fx=find(x),fy=find(y); 6 if(fx!=fy)... ...
分类:
其他好文 时间:
2017-10-14 16:58:19
阅读次数:
115
题目链接:http://poj.org/problem?id=1456 Supermarket Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13736 Accepted: 6206 Description A supermar ...
分类:
其他好文 时间:
2017-10-11 21:56:18
阅读次数:
208
Description Description: 自从zkysb出了可持久化并查集后…… hzwer:乱写能AC,暴力踩标程 KuribohG:我不路径压缩就过了! ndsf:暴力就可以轻松虐! zky:…… n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状 ...
分类:
其他好文 时间:
2017-10-06 18:36:22
阅读次数:
171
Description 自从zkysb出了可持久化并查集后…… hzwer:乱写能AC,暴力踩标程 KuribohG:我不路径压缩就过了! ndsf:暴力就可以轻松虐! zky:…… n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a ...
分类:
其他好文 时间:
2017-10-05 12:24:33
阅读次数:
165
按秩合并 并查集的优化有两个: 按秩合并, 路径压缩. 按秩合并相比于路径压缩, 效率较低, 但是它可以支持撤销操作. 按秩合并: 设 s[x] 为点 x 的秩, 合并的时候对于 x, y, s[x] < s[y] , 将 x 的父亲设为 y . 直观理解: 秩反应的是容纳水平, 秩越高, 容纳水平 ...
分类:
其他好文 时间:
2017-10-01 18:37:22
阅读次数:
227