随笔分类 - 数据结构——并查集
摘要:牛客多校: https://ac.nowcoder.com/acm/contest/5673/I 题意:每次从两个数中选一个,也可以不选,但是选不能选之前重复的。做法:同一行连一个边,然后一个图中有环的贡献就是这个图的大小;没环就是大小-1,用并查集维护就可以 #include <bits/stdc
阅读全文
摘要:这个点的水可以从其他点来,也可以从0号结点来,所以把0号结点当成超级源点,然后跑最小生成树 #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cmath> #include <c
阅读全文
摘要:int find(int x){ int temp=x; while(temp!=d[temp]) temp=d[temp]; while(x!=d[x]){ x=d[x]; d[x]=temp; } return temp; }
阅读全文
摘要:CodeForces - 566D t[i]表示与i不是一个祖先的最近的一个位置,合并[l,r]的时候就可以跳着合并 #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cmath
阅读全文
摘要:hdu2473并查集的删除操作建立虚点,删除它就断掉了它在原图中的所有关系,而成为独立节点,而且它只能被删除一次,而且删除之后还能进行操作,采用映射(虚点)的方法,建立虚点并把删除之后的操作挪到虚点上来。啊,初始化确实有问题,有可能多次删除的,所以要按操作的数量来,比如全部删除等等数据,哭了 1 #
阅读全文
摘要:蛋疼的并查集就是说它的父亲不一定是,它的祖宗所以最后要扫一遍再,For(i,1,n) d[i]=find(d[i]);
阅读全文
摘要:P3420 [POI2005]SKA-Piggy Banks套路题,a通过某种关系和其他的点建立关系。这种题不是环(dfs就可以了),就是并查集找连通块。这种题要建图,画图,就很清楚了。
阅读全文
摘要:洛谷P2024 食物链 经典并查集,开3倍并查集,x,x+n表示x吃,x+2*n表示吃x,冲突就ans+1,否则不断更新,主要更新捕食关系时要满足环形。
阅读全文
摘要:Cube Stack 有一点lazy思想,设三个数组cnt代表它以下的有多少个元素(直到栈底),top[x]代表x所在栈的栈顶元素,dad[x]代表x所在栈的栈底元素,先寻找父亲,然后递归更新累加cnt,找父亲的时候更新cnt,对于一个元素,再用之前一定要找父亲,这样才会是真的cnt。
阅读全文
摘要:洛谷P1455 搭配购买 把需要一起购买的物品放到并查集里,每一个并查集的标志是根节点,把v和w都累加,然后对根节点做01背包。
阅读全文