并查集
文章平均质量分 84
逐梦起航-带梦飞翔
为了更加长远的快乐!
展开
-
并查集—应用
有人说:并查集好写,好用,就是没什么地方用。的确,并查集应用不是特别广,但作为一种优质算法,这里还是要多说几句。并查集的问题主要分成两大类:带权并查集,种类并查集。一、带权并查集带权并查集就是让每个节点除了记录自己父亲以外,还记录一些其它的东西(如:集合的大小),通过它记录的信息来解决题目。例题1:(来源: caioj 1095)1. M i j :合并指令,i和原创 2017-08-14 17:09:12 · 1001 阅读 · 0 评论 -
洛谷4374 [USACO18OPEN]Disruption(树链剖分)|(LCA+并查集)
题目洛谷4374 [USACO18OPEN]Disruption题解1:在线树链剖分+线段树维护最小值一条新路(x,y,c)影响的是树上(x,y)间的所有路径,要取min,很容易想到用线段树维护。题解2:离线排序+并查集可以把所有新路递增排序,所以前面更新过的路后面一定不会再更新。暴力的话就是把(x,lca)和(y,lca)的路径全部走一遍。一种巧妙的方法是用并查集做路径...原创 2018-10-27 09:32:14 · 273 阅读 · 0 评论 -
洛谷3940 分组(贪心)(并查集)
题目把n个数按顺序分成若干组。定义矛盾为两个数的和为一个完全平方数。K=1时,不允许组内存在矛盾。K=2时,把小组分成两个团体,每个团体内不存在矛盾。特性很贪心的一个题。因为要求分组位置尽量靠前,所以从后往前贪心,每次使当前区间尽量长。题解K=1模拟这个很暴力,直接判断i能否加入当前区间即可。题解K=2并查集有点像关押罪犯那题,两个矛盾的尽量分放两边,这个就可以...原创 2018-10-23 13:19:11 · 335 阅读 · 0 评论 -
bzoj2503 相框(思维题)(并查集)
题目bzoj2503 相框特性如果原图是一个连通图,并且为欧拉回路,那么把所有点熔开即可。其实上面这句话是废话一个多条边(>2)连接的点一定要熔。一个奇数条边相连的点一定是熔完后要接的。题解乱搞+并查集其实上面的几条边相连都可以用“度”来表达。所以得到一个乱搞算法:1、每有一个多度点,ans++;2、每有一个奇度点,cnt++。对于那些自由边,另开一个点给它...原创 2018-10-25 13:33:31 · 537 阅读 · 0 评论 -
poj3417 Network(tarjan)(lca)(并查集)
题意给出一个图,然后执行Q个操作,每次往里面添加一条边,并输出桥(割边)的数量。题解tarjan+lca+并查集(路径压缩)用tarjan很容易求出原图中所有的桥。考虑加边的情况。如果加在一个e-dcc中,不必理会。如果不是,那么从x到y一路上的桥都将消失。处理这个问题,只需要把(x,y)路径上所有边都枚举一下,如果bridge[i]==true,那么ans--。因为这段路上的...原创 2018-10-14 12:12:15 · 269 阅读 · 0 评论 -
洛谷1525 关押罪犯(并查集)(黑白染色)
题目洛谷1525关押罪犯题解1贪心+扩展域并查集把怨气值排序,大的当然要分配到两个不同的监狱。一个点拆成两个点,分两层,不同监狱连不同层。代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=20010,m...原创 2018-10-07 13:36:15 · 277 阅读 · 0 评论 -
并查集—进阶
目录例题1题目题解例题2题目题解T1~2 Summarize例题3题目题解代码T1~2 Summarize例题4题目题解例题5题目题解代码例题6题目题解T4~6 Summarize例题1题目给一个无向图,求其中的连通块。题解并查集就是一个集合,并且以fa[x]为集合代表。对于这题,如果...原创 2018-09-09 15:40:55 · 612 阅读 · 0 评论 -
poj2054 Color a Tree(贪心)
题意要给一棵N个节点的树染色,染节点i时,它的父亲节点必须已经染色,根除外。每个节点有一个权值a[i],第T次染色的代价是T*a[i]。求最小的代价使所有点被染色。 题解贪心想要简单的选择最大权值并优先给其染色的想法是错误的。但是如果i节点的儿子s是权值最大的节点,在给i染完色后立刻给s染色是必然的。根据这个性质,我们可以把i和s两个点捆绑在一起,缩成一个点,并用其平均数来替代...原创 2018-07-18 15:32:06 · 379 阅读 · 0 评论 -
树状数组—求第k小的数—入门详解
第k大的数有太多的方法来求了,这是一个十分基础的问题,可以由很多种数据结构来完成。常用的有排序、主席树……。今天我要介绍一种更快更简洁的算法(Duang!)——树状数组。哦?它也可以求第k大?它不是只用于求区间和的算法吗?怎么还可以用来求大小关系?哈哈,一会就让你大开眼界。思路建一个权值树状数组。何为权值树状数组?大家有没有听说过权值线段树?权值线段树就是记录同数值的数的个数的线段树。例如有3,5...原创 2018-04-17 19:47:22 · 2231 阅读 · 3 评论 -
并查集—入门
所谓并查集,就是把一些有关的东西合并起来,方便查找。它的作用是快速判断两个数是否同一集合,与快速将两个集合并成一个集合并求出一些节点之间的关系。并查集的主要操作有下面三种:1、初始化:把每个点所在集合初始化为其自身;2、查找:查找元素所在的集合,即根节点;3、合并:将两个元素所在的集合合并为一个集合。在并查集中,每个节点记录着它的父亲(或者是它的老祖宗),这原创 2017-08-14 15:26:10 · 431 阅读 · 0 评论 -
洛谷CF1023F Mobile Phone Network(Kruskal)(并查集)
题意在一个无向无环图中,加入一些有边权的边,使得最终的图中的最小生成树仍为原图中那些边。求最大边权和。题解kruskal+并查集kruskal倒是挺好想的,如果要是能快速求到总图中两点间所有路径中最小边权值,那很好做。但是这东西并不好求。换一种思路,既然原图一定为最小生成树,不妨先以原图建一棵最小生成树,不够的边用有边权的边补上。剩下的有边权的边,就是限制条件了。每有一条(x,y...原创 2018-11-03 22:08:33 · 393 阅读 · 0 评论