并查集+拓扑排序。使用并查集解决a = b的情况。 1 #include 2 #include 3
#include 4 #include 5 using namespace std; 6 7 #define MAXN 10005 8 9 typedef
struct ...
分类:
其他好文 时间:
2014-06-11 21:54:30
阅读次数:
284
并查集总结
今天总结一下并查集,这个完了之后,寒假学的数据结构基础的模板类的题目差不多就完了,对于模板题,敲上10遍、20遍、30遍,那么模板
就不是模板,就成为了你自己的东西,就好像 A+B 一辈子也忘不了,以后每天敲一遍模板题,加深对模板的理解。
并查集,一般使用的是 数组实现、树实现,其中数组实现时间复杂度较高,树实现也就是分离集合森林 查找、合并的时间复杂度不会...
分类:
其他好文 时间:
2014-06-09 23:14:04
阅读次数:
204
题目大意:
三个操作。
1. 合并两个集合
2.把第一个元素放到第二个集合里
3.输出集合的数量和和。。
思路分析:
要用p记录这个元素所在集合编号,然后用编号建立并查集。
#include
#include
#include
#include
using namespace std;
typedef long long LL;
int set[111111...
分类:
其他好文 时间:
2014-06-07 12:52:40
阅读次数:
267
实现不相交集合数据结构的几种方式:
单纯的快速查找:
若id相同则在一个集合中,下图中,( 2, 3, 4, 9 )为一集合, 3 和 6 不在一个集合中
合并集合时,需逐个比较将两个集合的 id 统一,慢
缺陷:
合并慢
==================================================
2.单纯的快速合并:...
分类:
其他好文 时间:
2014-06-07 12:47:33
阅读次数:
266
并查集,
删除节点操作,可以用新建节点代替
维护每个点到跟节点的距离
Gears
Time Limit: 2 Seconds Memory Limit: 65536 KB
Bob has N (1 ≤ N ≤ 2*105) gears (numbered from 1 to N). Each gear can rotate clockwise or co...
分类:
其他好文 时间:
2014-06-07 11:33:37
阅读次数:
227
这个最小覆盖但不同于 POJ
3041,只有横或者竖方向连通的点能用一块板子覆盖,非连续的,就要用多块所以用类似并查集方法,分别横向与竖向缩点,有交集的地方就连通,再走一遍最大匹配即可一开始还有点没想清楚缩点怎么写,其实就是横向和竖向分别缩一下,不要混在一起,否则很麻烦,要注意一下#include
...
分类:
其他好文 时间:
2014-06-05 16:58:21
阅读次数:
204
本节介绍的是快速合并的优化算法。基本思想就是在每个节点上增加重量的概念,每次操作的时候将重量小的部件挂在重量大的部件之下。这样就避免了树形结构太高的问题。
下图展示了优化前后的树形结构深度的对比。
证明
可以证明每个节点的深度最大为lgN。
因为每次合并的时候较小的部件要放在较大的部件之下,所以如果要增...
分类:
其他好文 时间:
2014-06-02 19:00:51
阅读次数:
334
应用
渗透问题
游戏中会用到。
动态连接
最近共同祖先等价有限状态机物理学Hoshen-Kopelman算法:就是对网格中的像素进行分块Hinley-Milner多态类型推断Kruskai最小生成树Fortran等价语句编译形态学开闭属性Matlab中关于图像处理的bwlabel函数
渗透问题
一个N×...
分类:
其他好文 时间:
2014-06-02 18:56:56
阅读次数:
407
Lotto
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1411 Accepted Submission(s): 697
Problem Description
In a Lotto I have eve...
分类:
其他好文 时间:
2014-06-02 18:52:53
阅读次数:
396