并查集
_beginend
这个作者很懒,什么都没留下…
展开
-
hdu 6271 Master of Connected Component 树分块+并查集
题意给定两棵有n个节点的树,每个节点上有一对数(x,y),表示图G中的一条边。对于每一个x,求出两棵树中x到根路径上所有边在图G中构成的子图的连通块个数。 n≤10000n≤10000n\le10000分析考虑在第一棵树中提取关键点,使得每个点到他最近的关键祖先的距离不超过n−−√n\sqrt n,显然这样的点数不超过O(n−−√)O(n)O(\sqrt n)。 考虑把每个点的...原创 2018-07-14 13:35:59 · 358 阅读 · 0 评论 -
51nod 1743 雪之国度 Kruskal+倍增+并查集
题意雪之国度有N座城市,依次编号为1到N,又有M条道路连接了其中的城市,每一条道路都连接了不同的2个城市,任何两座不同的城市之间可能不止一条道路。 雪之女王赋予了每一座城市不同的能量,其中第i座城市被赋予的能量为Wi。 如果城市u和v之间有一条道路,那么只要此刻雪之女王的能量不小于|Wu-Wv|,这条道路就是安全的。 如果城市u和v之间存在两条没有重复道路的安全路径(其中每一段道路都是安全的)原创 2018-01-02 20:03:31 · 359 阅读 · 0 评论 -
Codeforces 870E Points, Lines and Ready-made Titles 并查集
题意给定平面直角坐标系上的n个点。对于每个点,你可以画过这个点的一条横线,或画过这个点的一条竖线,也可以什么都不做。问有多少种不同的结果。答案模1e9+7。 n<=100000,|xi|,|yi|<=1e9分析要是我能在比赛的时候把这题做出来的话就可以上紫名了。。。 我们把每一行和每一列分别看做一个点,对于平面上的一个点(x,y),在行点x和列点y之间连一条边。 对于每个联通块,若为树,则对答原创 2017-10-15 20:53:38 · 465 阅读 · 0 评论 -
bzoj 4886: [Lydsy2017年5月月赛]叠塔游戏 并查集
题意小Q正在玩一个叠塔的游戏,游戏的目标是叠出尽可能高的塔。在游戏中,一共有n张矩形卡片,其中第i张卡片的长度为a_i,宽度为b_i。小Q需要把所有卡片按一定顺序叠成一座塔,要求对于任意一个矩形,它的长度要严格大于它上边的任意一个矩形的长度。塔的高度为所有矩形的宽度之和。在游戏中,小Q可以将卡片翻转90度来使用,而且必须用上全部n张卡片。请写一个程序,帮助计算小Q能叠出最高的塔的高度。 n<=25原创 2017-11-16 20:50:40 · 386 阅读 · 0 评论 -
Codeforces 891C Envy lct/离线+并查集
题意给出一个带权无向图,每次询问给出边集的一个子集S,问原图中是否存在一棵最小生成树使得S的每条边都在里面。 n,m<=500000,∑\sum|S|<=500000分析比较裸的lct模板题。 先随便搞出一棵最小生成树,对于每次询问,逐个把边加入。对于新加入的一条边(u,v,w),如果u到v路径上边权的最大值等于w,那么就把该边加入到最小生成树中并删掉最大边,反之则该边不存在于最小生成树中。注意原创 2017-11-18 09:07:28 · 456 阅读 · 0 评论 -
bzoj 3706: 反色刷 欧拉回路+并查集
题意给一张无向图,边有黑白两种颜色,现在你有一堆反色刷,可以从任意点开始刷,经过若干条边后回到起点。 现在要询问至少需要多少个反色刷可以使这张图所有边都变成白色。 因为某种原因,边的颜色是会改变的,于是。。 需要支持以下操作: 1 x 把第x条边反色(编号从0~m-1) 2 询问当前图中最少需要多少个反色刷 100% n,m,q <= 1000000, c < 2,没有重边自环分原创 2017-11-10 20:29:42 · 384 阅读 · 0 评论 -
bzoj 1854: [Scoi2010]游戏 并查集
题意lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示。当他使用某种装备时,他只能使用该装备的某一个属性。并且每种装备最多只能使用一次。 游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装备所使用的属性值必须从1开始连续递增地攻击,才能对boss产生伤害。也就是说一开始的时候,lxhgww只能原创 2017-09-23 20:50:34 · 293 阅读 · 0 评论 -
Codeforces 896E Welcome home, Chtholly 分块+并查集
题意给出一个长度为n序列A,要求支持m个操作: 1 l r x对于区间[l,r]中所有大于x的位置,将其减去x 2 l r x查询区间[l,r]中有多少个位置的值恰好为x n,m,A[i],x分析首先需要大力分块一波。 对于每一个块,我们将权值相同的位置用并查集搞在一起,并维护一个tagtag表示整块的值要减去多少,mxmx表示块内最大值。 对于操作1: 首先两边的块可以暴原创 2018-01-19 09:08:01 · 572 阅读 · 0 评论 -
AtCoder Grand Contest 002 D - Stamp Rally 并查集+二分答案+倍增
题意给出一个无向连通图。有q次询问,每次询问给出两个不同的点x和y,还有一个参数z。求一个最小的k使得只考虑编号不超过k的边时,x的连通块和y的连通块中的点的并集不小于z。 n,m,q<=100000分析首先二分一波答案。 那么现在要快速求的就是某个点只走编号不超过k的边时的连通块大小。 注意到只有最小瓶颈生成树上的边是有贡献的,所以其他的边可以忽略。 考虑按编号从小...原创 2018-02-09 20:46:36 · 591 阅读 · 0 评论 -
Codeforces 650E Clockwork Bomb 并查集+set
题意给你两棵大小为n的树,每次操作可以把第一棵树的一条边删掉然后加上另一条边,且满足操作完之后仍是一棵树。问最少需要多少步操作才能把第一棵树变成第二棵树并输出方案。 n<=500000分析如果我们每次随便选一条在第二棵树中出现但不在第一棵树中出现的边,设为(x,y),那么第一棵树中x到y路径上必然存在一条边满足其只在第一棵树中出现。 很自然的想法就是去维护这个东西,然后我...原创 2018-02-26 16:21:26 · 336 阅读 · 0 评论 -
LibreOJ #2306.「NOI2017」蔬菜 贪心+堆+并查集
题意好长懒得写。分析先考虑如果只有一组询问的话要怎么做。 不难想到我们可以反过来贪心,这样删物品就变成了加物品,只要用一个堆来维护下就好了。 现在有多组询问的话,先找到最大的询问mx,然后做一次贪心得到第mx天的答案。 因为若某件物品在第t天一定能买,则其在第t天之前也一定能买。那么如果我们知道第t天的答案,可以通过把第t天的物品贪心地填进前t-1天来得到第t-1天的答案。 那...原创 2018-06-20 09:58:49 · 428 阅读 · 1 评论 -
Codeforces 855G Harry Vs Voldemort 边双连通分量+并查集
题意给一棵nnn个节点的树,有qqq次操作,每次操作会加入一条边,可能会形成环。每次操作后输出有多少个三元组(u,v,w)(u,v,w)(u,v,w)满足其两两不同且存在一条uuu到www的路径和一条vvv到www的路径满足两条路径之间没有公共边。 n,q≤105n,q≤105n,q\le10^5分析如果只是一棵树的话,可以通过枚举中间点www来计数。 如果是一个图的话,若u,...原创 2018-06-12 20:25:59 · 478 阅读 · 1 评论 -
LibreOJ #6198.谢特 后缀数组+并查集+trie启发式合并
题意给出一个长度为nnn的字符串SSS,以SiSiS_i为开头的后缀有一个权值wiwiw_i。对于两个不同的后缀SufiSufiSuf_i和SufjSufjSuf_j,定义其价值为lcp(Sufi,Sufj)+wi⊕wjlcp(Sufi,Sufj)+wi⊕wjlcp(Suf_i,Suf_j)+w_i\oplus w_j,问所有后缀中两两价值的最大值。 n,wi≤100000n,wi≤1000...原创 2018-05-28 10:45:39 · 341 阅读 · 0 评论 -
Codeforces 961F k-substrings 回文树+并查集
题意给出一个字符串S,对于所有的i≤⌈n2⌉i≤⌈n2⌉i\le\lceil\frac{n}{2}\rceil,求最长的奇数kkk使得 k≤n−i∗2+2k≤n−i∗2+2k\le n-i*2+2 S[i,i+k−1]=S[n−i−k+2,n−i+1]S[i,i+k−1]=S[n−i−k+2,n−i+1]S[i,i+k-1]=S[n-i-k+2,n-i+1]。 n≤106n≤106n\l...原创 2018-04-06 14:59:37 · 489 阅读 · 0 评论 -
bzoj 3237: [Ahoi2013]连通图 cdq分治+可撤销并查集
题意给一个n个点m条边的无向图,有K个询问,每次询问删掉一些边后原图是否仍然连通。 N<=100000 M<=200000 K<=100000分析这题的分治思路很棒棒呀。 由于是离线,可以把询问全部扒下来,然后对询问进行分治。 每次把左边没有右边有的边加进来,然后分治左边,右边同理。 连通性的话就用可撤销并查集维护一下就好了。什么?你问我如果强制在线的...原创 2018-03-29 07:48:20 · 388 阅读 · 0 评论 -
bzoj 3206: [Apio2013]道路费用 dfs+最小生成树+并查集
题意有一个n个点m条边的无向图,边都有权值,每个点上有p[i]个人。现在又要新加入k条边,要求给这k条边赋上一个权值,然后在原图中选择任意一个最小生成树,求当所有人都要走到节点1时,k条边中每条边的权值乘上经过该边的人数的最大值。 n<=100000,m<=300000,k<=20分析一开始的想法是,2^k枚举每条边选或不选,然后强制选那些被选定的边。对于原来最...原创 2018-03-06 16:57:31 · 292 阅读 · 0 评论 -
Codeforces 938G Shortest Path Queries 线段树分治+并查集+线性基
题意给出一个连通带权无向图,边有边权,要求资瓷q个操作: 1 x y d在原图中加入一条x到y权值为b的边 2 x y把图中x到y的边删掉 3 x y表示询问x到y的异或最短路 保证任意操作后原图连通无重边自环且操作均合法 n,m,q<=200000分析如果没有前两个操作的话,我们就可以把原图的dfs树建出来,那么x到y的异或最短路就是它们在dfs树上的路径再异或上...原创 2018-03-04 21:37:49 · 560 阅读 · 0 评论 -
bzoj 5101: [POI2018]Powód 最小生成树+并查集
题意在地面上有一个水箱,它的俯视图被划分成了n行m列个方格,相邻两个方格之间有一堵厚度可以忽略不计的墙,水箱与外界之间有一堵高度无穷大的墙,因此水不可能漏到外面。已知水箱内每个格子的高度都是[0,H]之间的整数,请统计有多少可能的水位情况。因为答案可能很大,请对10^9+7取模输出。两个情况不同当且仅当存在至少一个方格的水位在两个情况中不同。 n*m<=500000,1<=H&l...原创 2018-03-14 21:32:27 · 227 阅读 · 0 评论 -
bzoj 2959: 长跑 lct+并查集
题意某校开展了同学们喜闻乐见的阳光长跑活动。为了能“为祖国健康工作五十年”,同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动。一时间操场上熙熙攘攘,摩肩接踵,盛况空前。 为了让同学们更好地监督自己,学校推行了刷卡机制。 学校中有n个地点,用1到n的整数表示,每个地点设有若干个刷卡机。 有以下三类事件: 1、修建了一条连接A地点和B地点的跑道。 2、A点的刷卡机台数变为原创 2017-09-13 21:10:15 · 308 阅读 · 0 评论 -
bzoj 4973: 比特战争 并查集
题意在比特世界,A国正与B国爆发着战争!B国有n个城市,编号依次为1到n。这些城市之间通过m条双向道路连接,其中第i条道路连接着u_i,v_i这两个城市。任意两个城市之间可能有多条道路,也有可能从1号点出发不能到达所有城市。对于第i个城市,占领这座城市则需要在这里聚集a_i个特种兵,而在这里空降1个特种兵的代价为b_i。对于第i条道路,占领这条道路需要在道路两端点的城市累计聚集c_i个特种兵,即:假原创 2017-08-22 19:11:13 · 737 阅读 · 0 评论 -
bzoj 3563: DZY Loves Chinese 并查集+乱搞
题目:传送门分析:好好的,仔细的多看几遍题目,你就会惊奇地发现:沃日怎么连k都要异或。 那岂不是说可以直接得到上一行的答案!? 是的没错…… 那么我们只要把最后一行搞一搞就好了。 注意每一行的结尾会有各种各样乱七八糟的符号。代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<a原创 2016-10-17 20:11:23 · 495 阅读 · 0 评论 -
bzoj 3211: 花神游历各国 树状数组+并查集
题意给出n个数,要求资瓷下列操作: 1 l r表示查询l到r的和 2 l r表示把每个a[x] (l<=x<=r)变为sqrt(x) n<=100000,m<=200000分析显然开根号是不能区间维护的,但发现一个int最多开五次根号就会变为1,所以我们可以用并查集来维护每个数的下一个可以开根号的数是哪一个,那么就可以均摊O(1)来暴力修改了。 区间操作用树状数组搞定即可。第一次写并查集维护原创 2016-11-24 21:52:48 · 615 阅读 · 0 评论 -
bzoj 4537: [Hnoi2016]最小公倍数 并查集按秩合并+分块
题意给出n个点m条边的无向图和q个询问,每条边有两个权值a和b,每个询问给出x y a b,问有没有一条x到y的路径(不一定是简单路径)满足max(e_a)==a且max(e_b==b) n,q<=50000,m<=100000分析对于一个询问,我们可以把所有e_a<=a且e_b<=b的边都加进来,并看x和y所在的联通块内最大的a和最大的b是否与给出的a和b相等即可。 但如果每次暴力维护的话显然原创 2017-03-14 16:42:06 · 540 阅读 · 0 评论 -
bzoj 3376: [Usaco2004 Open]Cube Stacking 方块游戏 带权并查集
题意约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱. 游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种: 1.移动(M):将包含X的立方柱移动到包含Y的立方柱上. 2.统计(C):统计名含X的立方柱中,在X下方的方块数目. 写个程序帮贝茜完成游戏.分析直接上带权并查集即可。代码#include<iostream>原创 2017-08-10 07:53:48 · 445 阅读 · 0 评论 -
bzoj 3060: [Poi2012]Tour de Byteotia 并查集
题意给定一个n个点m条边的无向图,问最少删掉多少条边能使得编号小于等于k的点都不在环上。 n<=1000000,m<=2000000分析我们贪心地想,删边的话,肯定是删掉带关键点的边比删掉不带关键点的边更优。到最后我们会发现,其实不带关键点的边是不会被删掉的。 那么我们可以先加入所有不带关键点的边,用并查集维护连通块。 最后加入带关键点的边。若能加入则加入,不能加入则答案+1.代码#inclu原创 2017-08-02 11:46:20 · 270 阅读 · 0 评论 -
bzoj 4423: [AMPPZ2013]Bytehattan 并查集
题意比特哈顿镇有n*n个格点,形成了一个网格图。一开始整张图是完整的。 有k次操作,每次会删掉图中的一条边(u,v),你需要回答在删除这条边之后u和v是否仍然连通。 n<=1500分析这题由于是网格图,所以肯定跟网格图的性质有关。 如果我们把每个方格看做一个点,考虑如果新删掉的边使这两个点不连通,则必然有这条边两侧的方格是联通的。这个只要画一下图就明白了。 直接并查集硬上即可。代码#incl原创 2017-07-19 21:31:54 · 257 阅读 · 0 评论 -
bzoj 4025: 二分图 cdq分治+并查集
题意神犇有一个n个节点的图。因为神犇是神犇,所以在T时间内一些边会出现后消失。神犇要求出每一时间段内这个图是否是二分图。这么简单的问题神犇当然会做了,于是他想考考你。 n<=100000,m<=200000,T<=100000,1<=u,v<=n,0<=start<=end<=T。分析我们可以对时间进行cdq分治,然后用按秩合并的并查集来判断是否是二分图。 对于与当前区间交集不为空的边,如果该边原创 2017-07-22 16:34:19 · 398 阅读 · 0 评论 -
bzoj 4874: 筐子放球 并查集
题意小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有 n 个球,用整数 1 到 n 编号。还有 m 个筐子,用整数1到m编号。 每个球只能放进特定的两个筐子之一,第 i 个球可以放进的筐子记为 Ai 和 Bi 。 每个球都必须放进一个筐子中。 如果一个筐子内有奇数个球,那么我们称这样的筐子为半空的。 求半空的筐子最少有多少个。 小N看到题目后瞬间没了思原创 2017-05-03 11:02:29 · 566 阅读 · 0 评论 -
bzoj 4199: [Noi2015]品酒大会 后缀数组+并查集
题意给出一个 长度为 n 的字符串,每一位有一个权值 val。定义两个位字符为 r 相似,是指分别从这两个字符开始,到后面的 r 个字符都相等。两个 r 相似的字符还有一个权值为这两个字符权值的乘积。问对于 r = 0, 1, 2, … , n - 1,统计出有多少种方法可以选出 2 个“r 相似”的字符,并回答选择 2 个”r 相似”的字符可以得到的权值的最大值。 n<=3*10^5,val原创 2017-04-11 15:23:01 · 427 阅读 · 0 评论 -
bzoj 4569: [Scoi2016]萌萌哒 ST表+并查集
题意给出若干个限制l1 r1 l2 r2表示区间[l1,r1]和[l2,r2]相同,问有多少个不含前导0的n位数可以满足所有限制,答案模10^9+7. n<=100000分析一开始全往大数据结构上面想了,根本没有想到用ST表来做。题解这个想法非常的棒棒,用f[i,j]表示以i开头长度为2^j的区间 若f[i,j]和f[k,j]属于统一集合则表示区间[i,i+2j−1]...原创 2017-03-25 11:49:32 · 348 阅读 · 0 评论