并查集
Frozen_Guardian
已退役菜鸡Acmer
展开
-
CodeForces - 1217F Forced Online Queries Problem(线段树分治+并查集撤销)
题目链接:点击查看题目大意:给出 nnn 个点,初始时互相不存在连边,需要执行 mmm 次操作,每次操作分为两种类型:1 x y1 \ x \ y1 x y:如果 (x,y)(x,y)(x,y) 之间没有连边,则增加连边;如果 (x,y)(x,y)(x,y) 之间存在连边,则删除连边2 x y2 \ x \ y2 x y:询问点 xxx 和点 yyy 之间是否联通询问需要强制在线题目分析:关于强制在线实现连边与加边原创 2020-12-22 14:06:20 · 314 阅读 · 1 评论 -
CodeForces - 1463E Plan of Lectures(拓扑排序+并查集缩点)
题目链接:点击查看题目大意:给出一棵有根树,树边都是有向边,再给出 kkk 个关系 (x,y)( x , y )(x,y),其意义是访问完点 xxx 后需要立即访问点 yyy,问是否存在一种合适的拓扑序题目分析:因为题目说明了 kkk 个关系实际上也是一种绑定关系,在访问点 xxx 后需要立即访问点 yyy,所以不妨直接将点 yyy 与点 xxx 合并在一起,更具体的说,可以将 xxx 和 yyy 进行缩点,然后对缩点后的图进行拓扑,稍微画一下样例的图就能明白了:剩下的注意一下细节直接实现就可以原创 2020-12-20 13:20:41 · 465 阅读 · 0 评论 -
2020CCPC(长春) - Ragdoll(启发式合并+带权并查集)
题目大意:初始时给出 n 个集合,每个集合中都包含有一个数字,现在要求执行 m 次操作,每次操作分为下列三种类型:1 x y:在 x 位置新建一个集合,并且放置一个数字 y 2 x y:合并集合 x 和集合 y 3 x y:将集合 x 中的数字修改为 y每次执行完操作后需要回答,对于每个集合而言,的匹配数之和题目分析:首先考虑何时 x 和 y 才可以匹配,假设任取两个数字 x 和 y,再设 gcd( x , y ) = gcd = x ^ y,需要满足 x % gcd == 0 &..原创 2020-11-10 19:49:06 · 619 阅读 · 0 评论 -
CodeForces - 1445E Team-Building(可撤销并查集)
题目链接:点击查看题目大意:给出一张有 n 个点和 m 条边的图,每个点都有一个种类,共有 k 个种类,现在要从 k 个种类中每次选出两种,对所有C( k , 2 ) 种组合单独讨论,对于选出的两个种类中,包含的所有的点以及其连边所组成的子图,如果该子图可以拆分成二分图,那么答案加一题目分析:参考博客:https://blog.csdn.net/Zenith_Habitant/article/details/109451857k 的范围很大,正难则反,考虑计算不合法的组合个数,然后由总的合法个.原创 2020-11-02 18:27:52 · 653 阅读 · 2 评论 -
CH - 4901 关押罪犯(二分图判定+二分/并查集)
题目链接:点击查看题目大意:一共有n个罪犯,有m对仇人,每对仇人都有一个仇恨值,如果两个仇人在一起的话,会对监狱造成等价于仇恨值的损失,现在有两个监狱,可以将罪犯们分开关押,问监狱的最小损失是多少题目分析:每对仇人之间都可以建边,这样就可以直接二分答案,然后每一次都重新建边,若边权小于等于当前二分的mid,则忽略该边,若边权大于当前二分的mid,则加入到图中,最后判断一下当前的图能否构成二...原创 2019-11-16 20:28:53 · 485 阅读 · 0 评论 -
牛客 - 牛半仙的妹子图(并查集+bitset/克鲁斯卡尔重构树+主席树)
题目链接:点击查看题目大意:给出一个由 n 个点和 m 条边组成的连通图,每个点都有一种颜色,每条边都有一个权值,现在规定一个起点 st,再给出 q 次询问,每次询问给出区间 [ l , r ] ,问权值为i ∈ [ l , r ] 时,从起点经过权值不超过 i 的连通块内,有多少种不同的颜色题目分析:因为需要回答的答案满足前缀和的性质,所以可以预处理出前缀和然后 O( 1 ) 回答,但是询问的范围特别大, 需要对前缀和进行离散化,这个应该算是一个小技巧,具体实现可以参考代码然后就是颜色的...原创 2020-10-28 20:08:38 · 311 阅读 · 2 评论 -
CodeForces - 892E Envy(可撤销并查集)
题目链接:点击查看题目大意:给出一张由 n 个点 m 条边组成的连通图,有 q 次询问,每次询问给出一个边集,需要判断这些边是否可以同时出现在最小生成树上题目分析:需要用到的一个性质是,对于同一个询问来说,不同权值的选择是相互独立的,但是相同权值之间会相互影响,所以我们可以对每个询问的每条边单独拿出来讨论在进行正常的最小生成树的操作时,对于每次操作的当前边 i ,需要处理所有询问中边权与当前边权相等的边,因为当前处理的这些询问的边权都相等,所以我们按照询问的 id 分组单独讨论,对于每个 id原创 2020-08-06 03:56:27 · 424 阅读 · 0 评论 -
牛客多校8 - All-Star Game(线段树分治+并查集按秩合并的撤销操作)
题目链接:点击查看题目大意:有 n 个球员和 m 个球迷,一个球员可能是多个球迷的粉丝,需要选择最少的球员进行比赛,使得所有的球迷都愿意观看(对于每个球迷来说,都有至少一个其喜欢的球员入选比赛)对于球迷与球员之间的关系,如果球迷a 喜欢球员 b ,且球迷 c 喜欢球迷 b ,那么球迷 a 也会喜欢球迷 c 所喜欢的其他球员,对于球迷 c 同理现在有 q 次粉丝关系的修改(增加或删除),对于每次修改后回答询问题目分析:画画图不难看出,球迷与球员连边,设 cnt 为总的连通块的个数,设 cnt.原创 2020-08-06 02:47:33 · 606 阅读 · 3 评论 -
牛客多校8 - Interesting Computer Game(并查集)
题目链接:点击查看题目大意:给出两个数组 a[ i ] 和 b[ i],每次可以从 a[ i ] 和 b[ i ] 中选择一个数,求最后选出的数中,不同的数的个数最多题目分析:比赛时用网络流乱搞水过去了,但是现在都不知道为什么那样建图能过正解是并查集,将每对 a[ i ] 和 b[ i ] 视为一条边后,n 条边连接之后,会出现数个连通块,对于每个连通块我们分两种情况讨论:连通块是个树:有 n 个点和 n - 1 条边,因为每条边最多选一个点,所以 n - 1 条边最多只能选 n -..原创 2020-08-03 23:48:20 · 405 阅读 · 2 评论 -
HDU多校2 - 6763 Total Eclipse(贪心+并查集)
题目链接:点击查看题目大意:给出一张 n 个点和 m 条边组成的无向图,现在每个点都有一个点权,对于每次操作,可以选择一个点以及其周围能够连接的所有点,令其点权减一,当某个点的点权减到 0 时,就相当于将该点以及相应的连边从图中删除,问删除掉 n 个点最少需要进行多少次操作题目分析:比赛时题意出锅了,自闭了一下午回到这个题目,贪心去想每次选择点权最小的点然后将与其相连的连通块内的所有点点权减一一定是最优的(靠感觉猜的),但是如果暴力去实现的话,时间复杂度将是 n * n 的,考虑正难则反,正着删原创 2020-07-25 02:35:54 · 354 阅读 · 0 评论 -
牛客多校3 - Operating on a Graph(并查集+链表合并)
题目链接:点击查看题目大意:给出一个由 n 个点和 m 条边组成的无向图,每个点初始时都有颜色 i ,i ∈ [ 0 , n - 1 ] ,接下来有 q 次操作,每次操作会给出一种颜色 x ,分两种情况讨论:如果颜色为 x 的点不存在,则跳过此次操作 如果颜色为 x 的点存在,则将颜色为 x 的点的相邻的所有颜色块,都染成 x 的颜色问最后每个点的颜色是什么题目分析:合并问题不难想到并查集,对于每个点的颜色可以用并查集来维护,不过如果暴力更新的话肯定会 T ,有一个比较显然且比较重要的结论就原创 2020-07-19 18:04:24 · 345 阅读 · 2 评论 -
HDU - 5176 The Experience of Love(并查集)
题目链接:点击查看题目大意:给出一棵边权树,现在要求任意两点之间:最大权值的边减去最小权值的边之和题目分析:第一步可以先将公式转换一下:,这样问题就转换为了如何求任意两点之间的最大(最小)权值之和,正难则反,如果我们从“任意两点”切入,会比较难入手,但如果从“最大边权”入手,可能会好一点,有点类似于线段树离线的思想,将所有边权排序后逐次加入到树中,根据树上任意两点之间至多有一条边的性质,每次加入一条边后都会将两个本不相交的连通块连通起来,同时,因为排序的原因,当前边就作为了两个连通块的点互相到达时的原创 2020-05-19 00:50:32 · 271 阅读 · 0 评论 -
中石油训练赛 - 奎奎画画(思维+并查集+离线处理)
题目描述“为你写诗,为你静止,为你做不可能的事”,爱情是一种怪事,它让奎奎开始学习画画。奎奎认为一张画的艺术价值等于画上的白色联通块个数(当一个格子和它上下左右四个方向上的某个相邻格子颜色相同,则认为它们属于同一个联通块),奎奎还认为他作画的艺术价值和妹子对他的好感度紧密相关,因此奎奎非常在意每一时刻他的画的艺术价值。 为了简化题目,奎奎在一张n行m列的白色矩形格子画布上作画,他一共画了q笔,...原创 2020-03-09 11:33:45 · 326 阅读 · 0 评论 -
CodeForces - 722C Destroying Array(倒着并查集+离线处理)
题目链接:点击查看题目大意:给出一个数列a,现在给出操作b,每次操作都会删除掉数列a中指定位置的数,问每次删除后,最大连续字段和是多少题目分析:一开始看到最大连续字段和,以为是要用dp,又看了一下题发现a数组都是非负数,这样一来最大连续字段和就取决于在经过数组b的操作后是否连续了,判断连续一开始我想用set集合维护断点的,感觉太麻烦,又想用线段树试试能不能维护区间,还是比较麻烦,想不出比较...原创 2020-01-23 00:45:15 · 233 阅读 · 0 评论 -
POJ - 3694 Network(边双缩点+LCA+并查集优化)
题目链接:点击查看题目大意:给出一个由n个点组成的无向图,现在有m次操作,每次操作都会向图中增加一条无向边,每次操作后询问当前图中有多少个桥题目分析:题意很好理解,思路也很好想,就是代码量有点小多(好几个模板拼拼凑凑出来的)既然提到桥了,那么肯定先强连通缩一波点,将图重构成一棵树,求出原图中有多少个桥,随后每次操作都会加边,如果新边的两个端点属于同一个强连通块中,那么不会对答案做出贡献...原创 2019-12-24 00:48:24 · 272 阅读 · 0 评论 -
洛谷 - P2754 [CTSC1999]家园(最大流+并查集)
题目链接:点击查看题目大意:现在有k个人类需要从地球上转移到月球上去,现在有n个宇宙中转站,以及m个飞船周期性运载,每个飞船的载客都有一定的上限,但中转站的载客没有上限,现在给出每个飞船的路线,问最少需要多长时间才能将全部人类从地球运往月球题目分析:一开始没太看懂题,更确切的说是看懂题了但提取不出模型,题目中的飞船其实是一刻不停的在周期性运转,类似于环形公交车一样,所以题目给出的样例答案是...原创 2019-12-22 16:23:59 · 319 阅读 · 0 评论 -
CodeForces - 123A prime permutation(并查集,水题)
题目链接:点击查看题目大意:给出一个字符串s,问能否通过重组其字母顺序,从而满足:若字符串下标从1开始,对于每一个质数下标,满足题目分析:其实在纸上稍微写写画画就能看出个大概的规律,当字符串的长度比较大的时候,对于每个质数的倍数,都会包含2、3等比较小的倍数,所以当前质数及其倍数下标的字母一定和2、3质数及其倍数下标的字母相同,我们可以归为一个集合中去,也就是说这个集合中的下标的字母都是相...原创 2019-12-17 14:06:54 · 229 阅读 · 0 评论 -
HDU - 3081 Marriage Match II(二分+并查集+最大流/匈牙利删边)
题目链接:点击查看题目大意:n个男生和n个女生配对,配对规则如下:每个女生都可以选择没有吵过架的男生匹配 若女生A的好朋友是女生B,且女生B没有和男生C吵过架,则女生A也可以和男生C匹配现在问最多可以匹配多少轮,要求每轮必须完全匹配,且每个男生匹配的女生以及每个女生匹配的男生都不能重复,求最大匹配轮数题目分析:这个题目有两个做法,我都稍微说一下吧,因为这个题目挂在了网络流的题集里,...原创 2019-12-09 11:33:54 · 211 阅读 · 0 评论 -
HDU - 2874 Connections between cities(并查集+LCA)
题目链接:点击查看题目大意:给出n个点代表城市,再给出m条边将其连接,每条边都有边权,题目保证给出的图无环,现在给出两个点,首先询问两个点是否互相连通,若可以连通,询问两点之间的距离题目分析:判断连通我们直接用并查集维护分块就好了,因为是无向图,所以最后对于每个分块随便选一个点当做根节点跑一遍dfs维护一下树上前缀和,最后就可以直接判断了,算是一个模板题吧,比较简单代码:#inc...原创 2019-12-02 00:50:01 · 336 阅读 · 0 评论 -
CodeForces - 468B Two Sets(并查集+思维)
题目链接:点击查看题目大意:现在给出两个集合A和B,再给出两个数a和b,现在规定在集合A中的数x必须满足x和a-x同时在集合a中,而在集合B中的数x也同样需要满足x和b-x同时在集合B中,现在给出一系列数,问能否将所有的数都分配到两个集合中去题目分析:这个题因为放在了二分图的专题里,所以一开始想尽了一切办法想将这个题目往匈牙利上靠拢,但最终没办法将模型抽象出来,看了题解后才知道是个简单并查...原创 2019-11-11 12:28:34 · 297 阅读 · 0 评论 -
POJ - 2513 Colored Sticks(字典树+并查集+欧拉回路)
题目链接:点击查看题目大意:给出n个木棍,问若两两相连,最终能否构成一根长直木棍,相连的规则是两个木棍的相接端点的颜色需要保持相同题目分析:关于这个题目,我们可以将每个木棍视为一条边,每个木棍的两个端点视为两个顶点,问能否相连,我们可以联想到欧拉回路,也就是说必须满足下面的两个条件:所有的顶点能够构成回路 所有度数为奇数的顶点只能有零个或两个如此一来题目就简单多了,但还是存在许多细...原创 2019-10-30 17:17:00 · 233 阅读 · 0 评论 -
2019ICPC(徐州) - so easy(并查集+离散化)
题目链接:点击查看题目大意:给出一个1~n的序列,然后给出m个操作,每个操作分为下列两种情况:1 x:让数字x不可用 2 x:查询包括x在内的右侧的第一个可用数字题目分析:因为n给到了1e9,而查询只有1e6,所以我们必须将数据离散化,我最初的思路是先将1e6个查询记录下来,将操作1使用过的数字放到一个有序数列中,离线处理,可以倒着一步步模拟,每次遇到操作1就将其删除(即加入回原数组中...原创 2019-09-07 21:40:04 · 1050 阅读 · 1 评论