随笔分类 -  数据结构——并查集

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