用可持久化线段树维护可持久化并查集。 调了一下午,改为按秩合并就过了。。。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) memset(a,0,sizeof(a)) using name
分类:
其他好文 时间:
2016-02-05 00:58:07
阅读次数:
226
预处理一下每个点的相邻点,直接并差集。路径压缩加了按秩合并的优化效果不明显(甚至还有点常数),大概是路径压缩的上界很松吧。#include#include#include#include#include#include#include#include#include#include#include#...
分类:
Web程序 时间:
2015-10-18 15:28:38
阅读次数:
165
在不相交集合中的另一种更快的实现中,用有根树来表示集合。树中的每个成员指向其父节点,每棵树的根包含了代表(representative),并且是他自己的父节点。不相交森林即由多棵这样的树组成,如下图所示:
[注:(b)是(a)UNION(e,g)的结果]
采用上述表示方法直观上并不比采用链表表示算法更快,但是可以通过“按秩合并”和“路径压缩”来提升效率。
按秩合并(union by ra...
分类:
编程语言 时间:
2015-07-18 18:42:34
阅读次数:
455
1239: 中山学院 ACM小组
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 79 Solved: 21
[Submit][Status][Web
Board]
Description
经过几年的发展,中山学院 ACM队伍越来越庞大,水平越来越高,影响力也越来越大。随着人员数量的壮大,为了营造一个良好的队内之间沟通讨论氛围,...
分类:
其他好文 时间:
2015-06-17 09:42:57
阅读次数:
172
启发式合并就是一个简单的思想, 就是每次在合并的时候 都把 小的合并到大的里面。 可以证明这个方法在很多时候都可以把合并次数 为 n 的问题优化到 logn次。应用一) 并查集并查集的按秩合并就是记录一下每个点的size 是多大然后每次 把 size 较小的那个接到较大的上面。 但是好像并不是很常用...
分类:
其他好文 时间:
2015-01-26 15:05:29
阅读次数:
234
题目大意:有一些岛屿,一开始由一些无向边连接。后来也有不断的无向边加入,每一个岛屿有个一独一无二的重要度,问任意时刻的与一个岛屿联通的所有岛中重要度第k大的岛的编号是什么。
思路:首先连通性一定要用并查集维护,然后就是联通快内的第k大问题,显然是平衡树。但是并查集的合并怎么搞?可以考虑按秩合并,这样的话就保证每次在平衡树中处理的元素尽量的少,就可以水过这个题了。
注意一下输出-1的判断...
分类:
其他好文 时间:
2014-10-17 12:03:21
阅读次数:
198
在上面一讲是并查集(1)-判断无向图是否存在环. 我们使用了并查集的两个操作:union()和find()// find 的原始实现int find(int parent[], int i){ if (parent[i] == -1) return i; return f...
分类:
其他好文 时间:
2014-07-29 10:57:16
阅读次数:
266