![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
BZOJ 3038 上帝造题的七分钟2 树状数组+并查集
题目大意:给定一个序列,提供下列操作:1.将[l.r]区间内每个数a[i]变为sqrt(a[i])2.查询[l,r]区间的和同BZOJ3211 花神游历各国链接:http://blog.csdn.net/popoqqq/article/details/39961591我zhege原创 2014-10-10 17:52:28 · 1867 阅读 · 1 评论 -
BZOJ 3319 黑白树 并查集+线段树
题目大意:给定一棵树,有两种操作:1.询问某个点到根的路径上遇到的第一个黑色边的编号2.将某条路径涂黑首先将每条边归到它下面的点上记录每个点到根路径上深度最大的黑点那么将一个点涂黑就相当于把子树中所有的点的最深黑点取个max这个用线段树就可以维护由于一个点最多只会被涂黑一次 因此时间复杂度是O(nlogn)的 现在问题就是如何在每次修改时找到路径上所原创 2015-03-06 19:39:22 · 1827 阅读 · 3 评论 -
BZOJ 2054 疯狂的馒头 并查集
题目大意:给定一个序列,多次将某个区间染成某种颜色,求最后每个点是什么颜色m由于对每个点起作用的染色只有最后一次,因此倒着做,如果一个点已经被染色,就在并查集中将这个点连向右面那个这样每个点只会被染色一次,时间复杂度O(n+m)#include #include #include #include #define M 1001001using namespace std;原创 2015-03-07 18:31:35 · 2027 阅读 · 0 评论 -
BZOJ 1104 POI2007 洪水pow 并查集
题目大意:给定一张地势图,所有的点都被水淹没,现在有一些关键点,要求放最少的水泵使所有关键点的水都被抽干前排感谢VFK首先可以证明一定存在一种最优解使所有的水泵都在关键点上那么我们将所有关键点按照高度排序,从小到大枚举每个关键点对于每个关键点x,我们将所有高度小于等于x点的点都加入并查集并将相邻的合并由于x是并查集中最高的点,因此并查集中任意一个点放置水泵都会导致点x被抽干原创 2015-03-10 16:33:53 · 2039 阅读 · 0 评论 -
BZOJ 1529 POI2005 ska Piggy banks 并查集
题目大意:有n个储钱罐,每个的钥匙都在另一个里面,求取出所有储钱罐中的钱最少要砸开几个容易发现每个联通块都是一棵外向树,我们只需要砸开环上的任意一个节点就可以打开这个联通块中的所有储钱罐问题转化成了求一个图的联通块个数 上并查集即可#include #include #include #include #define M 1001001using namespace std;原创 2015-04-02 13:19:56 · 1559 阅读 · 4 评论 -
BZOJ 1116 POI2008 CLO 并查集
题目大意:给定一个无向图,求能否找到一个点和边的匹配,使匹配数为点数。我又一次被并查集虐傻了。。。。http://blog.csdn.net/popoqqq/article/details/41544997很好奇自信Dinic的话O(40W*√10W)的复杂度会不会T估计会。。。#include #include #include #include #define原创 2015-03-24 20:13:19 · 1030 阅读 · 0 评论 -
BZOJ 4025 二分图 分治+并查集
题目大意:给定一张nn个点的图,有mm条边,TT个时间段,每条边只存在于(st,ed](st,ed]这些时间段,求每个时间段内这个图是否是二分图 分治并查集大法好 定义Solve(x,y,E)Solve(x,y,E)为当前处理的区间为[x,y][x,y],EE为所有存在时间为[x,y][x,y]的子集的边的集合 那么对于EE中的每一条边(u,v)(u,v),讨论: 若当前边的存在时间为[x,原创 2015-05-12 16:55:42 · 4683 阅读 · 0 评论 -
BZOJ 2959 长跑 Link-Cut-Tree+并查集
题目大意:给定n个点,支持以下操作: 1.在某两个点之间连接一条无向边 2.改变某个点的权值 3.将每条边设定一个方向,然后从xx走到yy,求能经过的所有点的权值和 首先如果这个图是静态的,我们把边双都缩点,那么每次询问显然就是两个点所在边双路径上的点权和 现在图是动态的,因此我们用动态树维护一下就行了 如果连边的两个点不连通,就在LCT中连接这两个点 如果连边的两个点已经连通,就将这原创 2015-05-15 10:49:20 · 2270 阅读 · 0 评论 -
BZOJ 2503 相框 并查集
题目大意:给定一张无向图,每次可以进行以下两种操作: 1.将一个点分裂成一些点,原先这个点连接的每条边任选一个新点进行连接 2.将两个度数为1的点合并为1个点 求将这个图变成一个环的最小操作次数首先我们考虑拆 由于终态每个点度数最多为2,因此我们将每个度数大于2的点都拆成一些度数为2的点,如果有零头,留下一个度数为1的点 由欧拉通路的相关结论可知,按照这种拆法,一个有k(k>=2)k(k>原创 2015-08-27 17:35:50 · 1600 阅读 · 0 评论 -
codeforces #576E Painting Edges 分治+并查集
题目大意:给定一张nn个点mm条边的无向图,每条边有一个颜色(初始为无色),qq次操作,每次将一条边染为kk种颜色之一,要求染完后对于任意i=1...ki=1...k,当只有颜色为ii的边存在的时候这张图是一个二分图,如果不满足条件就不进行修改,对于每次修改输出是否成功这显然是一个动态二分图问题,分治并查集解法戳这里 但是这道题我们并不知道每条边的具体存在时间 因此我们这样: 假设每次修改都生原创 2015-09-15 15:00:13 · 1875 阅读 · 0 评论 -
BZOJ 1098 POI2007 办公楼 DFS+并查集
题目大意:给定一张无向图,一个点集能分成两部分当且仅当这两部分的每一对点之间都有边,求最多能分成多少部分以及每部分的大小这实际上就是在求反图的联通块个数以及每个联通块大小但是反图太大,不能直接做因此我们枚举每个点,从这个点开始DFS这样做是O(n^2)的,但是我们可以利用并查集来减少枚举的复杂度一个点x如果访问过,就在并查集中连向x+1 这样做的好处是枚举的时候可以直接找到下一原创 2015-03-03 22:21:36 · 1399 阅读 · 0 评论 -
BZOJ 3562 SHOI2014 神奇化合物 暴力
题目大意:维护一张弦图,支持加边、删边和询问图中有多少个联通块暴力题233直接做O(qn+qm)会挂 因此我们预先将m条边中自始至终不会被删除的边用并查集缩点这样图中的边就只有O(q)条 暴力即可时间复杂度O(nq+q^2)很疑惑为什么要给一张弦图- - 去找了下没看到类似于动态弦图的东西- -#include #include #include #include原创 2015-03-01 11:17:51 · 1628 阅读 · 0 评论 -
BZOJ 3362 Navigation Nightmare 带权并查集
题目大意:给定一些点之间的位置关系,求两个点之间的曼哈顿距离此题土豪题,不过POJ也有一道同样的题,可以刷一下别被题目坑到了,这题不强制在线,把询问离线处理即可然后就是带权并查集的问题了。。。将权值设为方向向量,重载+和-,按照正常权值并查集做就行了#include#include#include#include#define M 40400using namespace原创 2014-10-09 21:11:18 · 1753 阅读 · 0 评论 -
BZOJ 3211 花神游历各国 树状数组+并查集
题目大意:给定一个序列,提供下列操作:1.将[l.r]区间内每个数a[i]变为sqrt(a[i])2.查询[l,r]区间的和根号是不支持区间修改的,于是我们选择单点修改区间查询的树状数组,但是这样是O(n^2)的,怎么办?我们发现一个数x最多开loglogx次根号就会变为1 也就是一个int范围内的数只要开5次根号就会变为1 于是修改的总时间复杂度为O(nloglogn)但是单原创 2014-10-10 14:22:59 · 2358 阅读 · 0 评论 -
BZOJ 1015 JSOI2008 星球大战 starwar 并查集
题目大意:给定一个无向图,求联通块个数,以及k次每次摧毁一个点后的;联通块个数将边和摧毁的点全记录下来,反着做即可。注意被摧毁的点不能算作联通块#include#include#include#include#define M 400400using namespace std;struct abcd{ int to,next;}table[M];int head[M原创 2014-10-14 08:48:46 · 1731 阅读 · 0 评论 -
BZOJ 1854 SCOI2010 游戏 二分图最大匹配/并查集
题目大意:给定n个武器,每个武器有两个属性,只能使用其中一个,要求选择一些武器 可以造成形如1 2 3 4的伤害 求最大伤害题目大意我没写明白还是去看原题把QAQ做法1:同 1191 每个武器向两个属性连边 然后从1~10000枚举属性 跑二分图最大匹配 无法匹配则输出答案#include#include#include#include#define M 1001001u原创 2014-11-27 13:43:22 · 3468 阅读 · 0 评论 -
BZOJ 2079 Poi2010 Guilds 并查集
题目大意:给定一个无向图,要求将一些点红黑染色,使每个点及其相连的点中至少有一个黑色的点和一个红色的点逗比题ぽい~对于任意一个大小>=2的连通图,我们只需要搞出这个图的任意一棵生成树,将这棵生成树撸成二分图再染色就一定能满足要求的ぽい~因此无法满足要求当且仅当存在一个大小为1的联通块ぽい~并查集即可ぽい~#include #include #include #includ原创 2015-02-02 20:38:55 · 1015 阅读 · 0 评论 -
BZOJ 3563 DZY Loves Chinese 并查集
题目大意:给定一个无向联通图,q次询问当图中某k条边消失时图是否联通 强制在线逗比题233不明白什么意思的去看DZY Loves Chinese II的红字就明白这题为何逗比了0.0#include #include #include #include #define M 100100using namespace std;struct edges{ int x,y原创 2014-12-11 14:01:44 · 2116 阅读 · 0 评论 -
BZOJ 1202 HNOI2005 狡猾的商人 并查集
题目大意:给定一个序列,m次给出一段区间的和,求这个序列是否合法第一眼看还以为是差分约束- -[x,y]区间内和为z等价于sum[y]-sum[x-1]=z用并查集来维护这个关系即可#include #include #include #include #define M 110using namespace std;int n,m;int fa[M],f[M];i原创 2015-01-20 08:38:57 · 1582 阅读 · 0 评论 -
BZOJ 1370 Baltic2003 Gang团伙 并查集
题目大意:给定n个人,朋友的朋友是朋友,敌人的敌人是朋友,朋友之间组成一个团伙,求团伙数将每个点x拆成两个:x和x+n如果x和y是朋友,就将x和y合并如果x和y是敌人,就将x和y+n合并,将y和x+n合并注意敌人的朋友不一定是敌人,因此如果x和y是朋友,不能将x+n和y+n合并#include #include #include #include #define M 1原创 2015-01-20 16:11:01 · 2480 阅读 · 0 评论 -
BZOJ 3454 家族 并查集
题目大意:给定一张无向图,每个点有边权,给每个联通块大小一个喜爱度,求一个最小的区间,使保留这个区间内的所有边权的边时喜爱度之和最大nm脑残没法治系列……如果暴力枚举区间并每次计算喜爱度,时间复杂度为O(nm^2),超时固定一个左端点,将右端点右移,每次用并查集加边并维护喜爱度之和,时间复杂度O(m^2)然后这题就做完了= =#include #include #inc原创 2015-02-26 22:37:58 · 1194 阅读 · 0 评论 -
BZOJ 4320 ShangHai2006 Homework 并查集
题目大意:维护一个集合,支持以下操作: 1.插入一个数XX 2.询问所有数 mod Y\ mod\ Y的最小值将询问按照Y≤3∗105−−−−−−√Y\leq\sqrt{3*10^5}和Y>3∗105−−−−−−√Y>\sqrt{3*10^5}两种分类Y≤3∗105−−−−−−√Y\leq\sqrt{3*10^5}:开一个数组ansYans_Y代表当询问为YY的时候的答案,每插入一个数枚举1≤i原创 2015-10-30 17:43:31 · 2574 阅读 · 0 评论