并查集的按秩合并

表示吉利的讲课第一题我就听得一脸懵逼。。。。。。没救啦

然后请教了一下伊嘉,大概明白了是对时间轴分治然后按秩合并,就回来学了下。

POJ2492

传送门:http://poj.org/problem?id=2492

等等,我为什么要写这道题。

这道题,不用按秩也能A啊。。。。

15444012 wxx_louisa 2492 Accepted 192K 750MS C++ 784B 2016-04-27 19:26:42
15444008 wxx_louisa 2492 Accepted 200K 782MS C++ 856B
2016-04-27 19:25:55

BZOJ4025

不知道为啥现在习惯先去看一下AC人数,才一百多个人就有点虚.

感觉是跟课件里PICKs loves segments tree的题差不多,都是只维护一段时间内的插入然后修复,听说修复比删除好操作多了。

代码以后补,先回去睡觉啦。。。明天二试加油rp++!

时间: 2024-10-06 11:16:35

并查集的按秩合并的相关文章

并查集(2)-按秩合并和路径压缩

在上面一讲是并查集(1)-判断无向图是否存在环. 我们使用了并查集的两个操作: union() 和 find() // find 的原始实现 int find(int parent[], int i) { if (parent[i] == -1) return i; return find(parent, parent[i]); } // union()的原始实现 void Union(int parent[], int x, int y) { int xset = find(parent, x

[2017年第0届浙江工业大学之江学院程序设计竞赛决赛 I] qwb VS 去污棒(并查集,按秩合并,最小生成树,LCA)

题目链接:http://115.231.222.240:8081/JudgeOnline/problem.php?cid=1005&pid=8 题意:中文题面. 手动画一下会发现所求边必然存在于最大生成树上,那么就可以首先构造一棵最大生成树. 问题转化成一棵树上求两个点之间的链上的最短边,用倍增lca就可以做了,但是我不会. 于是可以考虑建树时的操作,在求最大生成树的时候按秩合并,即集合大的根要做集合小的根的父亲,这样连一条有向边,保证路径上的所有边没有变化,并且能够维持整棵树高不会超过log(

普林斯顿公开课 算法1-10:并查集-优化的快速合并方法

应用 渗透问题 游戏中会用到. 动态连接 最近共同祖先 等价有限状态机 物理学Hoshen-Kopelman算法:就是对网格中的像素进行分块 Hinley-Milner多态类型推断 Kruskai最小生成树 Fortran等价语句编译 形态学开闭属性 Matlab中关于图像处理的bwlabel函数 渗透问题 一个N×N的矩阵,判断顶部和底部是否连通就是渗透问题. 下图中左侧的矩阵能渗透,右侧矩阵不能渗透. 渗透问题在电学.流体力学.社会交际中都有应用. 在游戏中可能需要生成一张地图,但是作为地图

bzoj4668: 冷战 并查集

并查集,按秩合并,树高log,暴力查询. 果然bzoj新挂的题中过的人多的全是sb题. 写了一发秒WA,发现姿势不对.(@[email protected]) 然后过了50min,开始怀疑人生.(*_*) 这么长时间我lct都写完了.(Q_Q) 本着凡事要往好处想的精神,至少我改正了姿势.(T_T) #include<cstdio> #define N 500005 int n,m,q,k,s,t,l; int f[N],d[N],r[N],p[N]; int find(int i){ if(

poj2492 A Bug&#39;s Life (并查集拓展)

C - A Bug's Life Crawling in process... Crawling failed Time Limit:10000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2492 Appoint description: CSUST_11 (2013-04-14) System Crawler (2016-05-13) Description B

洛谷P3402 【模板】可持久化并查集(可持久化线段树,线段树)

orz TPLY 巨佬,题解讲的挺好的. 这里重点梳理一下思路,做一个小小的补充吧. 写可持久化线段树,叶子节点维护每个位置的fa,利用每次只更新一个节点的特性,每次插入\(logN\)个节点,这一部分思路还是很轻松.关于此部分的其它问题可以参考下我的可持久化线段树总结 一开始,写惯了常规并查集.用惯了路径压缩的我,以为在这一题里也要这么搞.我对我的naive真是太感动了 试想一下,因为路径压缩时,再次调用getf后,是要更新一部分值的.在数组上搞这些操作倒是挺快,然而在可持久化线段树里呢?每次

【模板/经典题型】并查集维护生成树

这里的并查集是按秩合并并查集. 这种方法维护生成树的时候可以维护一个点到根的权值. 但是由于合并的时候做了一个类似换根一样的操作,因此这个权值通常只能是异或之类的. //find-union-set int top,f[N],v[N],sz[N],sk[M]; int find(int x){return x==f[x]?f[x]:find(f[x]);} int value(int x){return x==f[x]?0:v[x]^value(f[x]);} bool merge(int a,

数据结构---并查集

并查集,顾名思义,合并 查找 集合: 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.常常在使用中以森林来表示. 对于概念等等的这里不再赘述,直接讲解应用. [初始化] MakeSet,将每一个节点的父节点置为本身:rank(秩),是节点构成树的深度 void MakeSet(){ for(int i=1;i<=maxn;i++){ parent[i].value = i; parent[i].rank=0; } } [查找] 一直向上查找,直到

[hdu 5354] Bipartite Graph 分治 并查集

题意 给定一张 $n$ 个点, $m$ 条边的无向图. 问删去每个点后, 原图是不是二分图. $1 \le n, m \le {10} ^ 5$ . 分析 一个图是二分图 $\Leftrightarrow$ 图中不存在奇环. 判定一个图是不是二分图, 可以使用并查集, 多维护一个当前点与父亲的关系的量 bond . 删除每一个点, 我们有两种维度: 区间加法, 区间减法. 这里考虑区间加法, 即考虑分治. 由于要支持撤销, 所以使用按秩合并的并查集. 注意按照大小合并... 按深度合并会 TLE