并查集
天翼之城*
这个作者很懒,什么都没留下…
展开
-
Codeforces 1217 F. Forced Online Queries Problem —— 又见 线段树分治+并查集
This way题意:每次给你两个操作:1 x y 表示加/断点x和点y之间的连边2 x y 问你x和y是否连通题解:在线的做法好像是什么ETT?不是很懂这题是个假的强制在线,只需要一开始将所有情况处理出来放到线段树里面,dfs线段树的时候查看当前操作是否合法即可。那么又是将询问当做叶子结点,操作当做区间更新,然后向下dfs的时候更新一下并查集即可。#include<bits/stdc++.h>using namespace std;#define pa pair<原创 2020-12-21 19:33:48 · 196 阅读 · 0 评论 -
Codeforces 1416 D. Graph and Queries —— 启发式合并
This way题意:现在有一张图,每次有两种询问:1 x 表示在x所在的连通块中,找到值最大的数输出,并且将那个值变成02 i 表示将第i条边删掉题解:将值变成0这个操作限制了我们一定要从前往后做。但是我偏不,因为从前往后很难找到当前的连通块是什么,但是我们可以从后往前,对于当前如果是2操作,并且如果x和y不在一个集合内,就将其连起来。注意因为我们之后是要从前往后做的,所以不能路径压缩,需要使用启发式合并,将两个集合的数合并在一起。然后从前往后做的时候,再将大集合中删掉小集合的数。大致思原创 2020-12-04 17:10:33 · 168 阅读 · 0 评论 -
Codeforces 1444 C. Team-Building —— 并查集
This way题意:现在有n个人构成一张图,总共有k只队伍,每个人属于一只队伍。现在要让你拿出两只队伍,然后将两只队伍的人重新组成两队,使得对内任意两个人之间没有连边,问你有多少种选法题解:那么有两种情况下是不可行的:1.对于一个队伍里有环的情况那么这时候,无论环上的谁分到哪边,都会有连边2.对于一个奇环上只有两个组的情况这时候就是一张无法构成二分图的环了那么对于第一种情况直接并查集搞一搞对于第二种情况,一开始我是想用带权并查集搞得来着,但是如果是枚举每两种队伍的话,并查集添加影响之原创 2020-11-15 20:39:37 · 244 阅读 · 0 评论 -
Codeforces 1044 D. Deduction Queries ——带权并查集+STL
This way题意:现在有一个大小为2302^{30}230的数组,每个位置都有一个值,每次有两种操作:1 x y z 表示告诉你x到y区间的所有值异或和为z(如果和之前告诉你的有悖就权当没说)2 x y 问你区间x到y的所有值的异或和是多少题解:和这道题很像啊:This way如果不是很清楚带权并查集的也可以去瞄一眼,我讲了一点点基础首先这道题它也是异或,那么就不需要特别的分fax和fay两种合并情况。然后的话,它这个数组长度很大,就没办法像以前一样直接开一个数组,那么我们就用un原创 2020-08-19 14:26:13 · 272 阅读 · 0 评论 -
2020牛客暑期多校训练营(第八场)A All-Star Game —— 线段树分治+并查集,关于unordered_map自定义pair_table
This way题意:现在有n个球员,m个球迷,定义第i个球迷喜欢第j个球员当他满足以下条件之一:1.第i个球迷和第j个球员有连边2.第i个球迷和第k个球员有连边,且第L个球迷和第k个球员有连边且第L个球迷和第j个球员有连边现在告诉你一开始球员球迷连边情况,并且接下来有q个询问,每次告诉你球迷x和球员y,如果他们没有连边,就连边,如果有连边就断掉。每次操作结束后,问你最少需要几个球员才能连上所有的球迷。题解:赛上没时间看这道题目了,赛后发现这道线段树+并查集的经典题目,上一次这种想法是CF原创 2020-08-05 15:56:08 · 262 阅读 · 0 评论 -
Hdu 6763 Total Eclipse —— 贪心,并查集
This way题意:现在有n个城市构成一张图(可能不连通),每个城市的亮度为bi,你每次可以选择一个大小为k的集合的城市,这个集合的城市不经过非集合的城市就能两两到达。并且将所有的亮度-1。你每次要选的k尽量大并且最终所有的城市的亮度为0.问你最少需要几次操作。题解:一开始的题意是有问题的?!!爷吐了如果不是每次k要尽可能大,我感觉这道题有点难,至少我想了一段时间想不出来。后来题目改了之后这不就是水题吗就比较简单。首先可以确定的是肯定是从亮度比较小的城市开始,将所有和他连通的城市的亮度减掉它原创 2020-07-23 17:53:03 · 1787 阅读 · 3 评论 -
Favorite Colors —— 并查集+dfs
应该能进题意:现在有n个数,然后有一些有向边。现在需要将每个数涂上色,要求如下:1.颜色种类尽可能多2.如果两个点指向相同颜色的点,那么这两个点的颜色相同3.最终构造出来的颜色按顺序输出时字典序最小题解:我们可以发现的就是如果有一个点的入度>=2那么这些儿子的点的颜色相同,然后再指向这些儿子的点的所有颜色相同,于是我们就需要dfs去做并查集,然后多个儿子的话,我们需要将儿子的所有儿子都放到根那里,此时就需要启发式合并,这样的时间复杂度最大就是O(nlogn)O(nlogn)O(nlogn原创 2020-07-11 19:59:59 · 249 阅读 · 0 评论 -
“科大讯飞杯”第18届上海大学 G 血压游戏 —— 想法,并查集
This way题意:链接:https://ac.nowcoder.com/acm/contest/5278/G来源:牛客网Compute 有一棵 n 个点,编号分别为 1∼n1\sim n1∼n 的树,其中 s 号点为根。Compute 在树上养了很多松鼠,在第 i 个点上住了 aia_iai 个松鼠。因为某些缘故,它们开始同时向根节点移动,但它们相当不安分,如果在同一个节点...原创 2020-04-25 21:26:12 · 227 阅读 · 0 评论 -
Poj 1182 食物链 —— 带权并查集
This way题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接...原创 2020-03-10 20:41:21 · 274 阅读 · 0 评论 -
HihoCoder 1515 分数调查 —— 带权并查集模板
This way题意:小Hi的学校总共有N名学生,编号1-N。学校刚刚进行了一场全校的古诗文水平测验。学校没有公布测验的成绩,所以小Hi只能得到一些小道消息,例如X号同学的分数比Y号同学的分数高S分。小Hi想知道利用这些消息,能不能判断出某两位同学之间的分数高低?题解:带权并查集模板,注意合并的时候赋值情况即可#include<bits/stdc++.h>using n...原创 2020-03-10 17:06:02 · 191 阅读 · 0 评论 -
Kattis - dancecircle —— 带权并查集
This way题意:n个点围成一个圈,每个点的值要么是0,1.告诉你每个点左li到右边ri区间1的个数是奇数个还是偶数个,问你这个01串有多少种组成方法。题解:上一次做带权并查集还是在两年前,,现在已经差不多忘掉了。带权并查集它的权值指的是从这个点到根节点的差值,那么在find的时候int finds(int x){ if(fa[x]<0) return...原创 2020-03-10 09:23:46 · 187 阅读 · 0 评论 -
Codeforces 1290 C Prefix Enlightenment —— 带权并查集,有丶东西
This way题意:给你一个长度为n的01串,m个几何,每个集合包含1-n的一些数,并且对于第i个集合,如果你选择了它,那么01串中对应的集合里面的位置的数就会取反。问你到第i个位置时,前面i个位置都是1,后面的位置随意,问你最少需要选择多少个集合。题解:我猜到是并查集,但是只能想到对于第i个集合有取和不取两种情况,之后对于权值怎么考虑就不会了。有点难讲,主要还是靠自己意会。首先...原创 2020-03-04 13:01:50 · 250 阅读 · 0 评论 -
Codeforces 1250 E The Coronation —— 并查集
This way题意:给你n个串,对每一个串你可以进行一次翻转操作,使得最终这些串两两运算时,他们同一位置上的值相同的位置数最小的大于等于k,问你最少要反转多少个以及翻转哪几个。题解:自己想真的没有思路,看了题解恍然大悟是并查集。位置和i位置j的关系分成4种情况:1.无论i和j是否翻转都<k:无解2.不翻转i,翻转j之后>=k:i与j+n相连,i+n与j相连3.不翻转i,...原创 2020-01-31 19:36:33 · 229 阅读 · 0 评论 -
HYSBZ 3674: 可持久化并查集加强版——主席树+并查集
Description: 自从zkysb出了可持久化并查集后…… hzwer:乱写能AC,暴力踩标程 KuribohG:我不路径压缩就过了! ndsf:暴力就可以轻松虐! zky:……n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 请注意本题采用强制在...原创 2018-08-30 16:22:36 · 197 阅读 · 0 评论 -
Codeforces Round #484 (Div. 2) D. Shark—— 并查集维护区间 + 想法
题目链接:http://codeforces.com/contest/982/problem/D题意:给你n天一只鲨鱼每天游的距离,让你找一个k,并有三个要求:1.在每一个区间逗留的天数相同(比如说k=3,那么假设有5天,1 3 2 4 5,第一天在一个区间逗留,第二第三天在一个区间逗留,只要每天游的距离不超过k就算在一个区间内)2.逗留的区间尽可能多3.k在满足1,2的情况下尽可能小...原创 2018-09-20 12:21:20 · 206 阅读 · 0 评论 -
Codeforces Contest 1081 problem D Maximum Distance —— 并查集
Chouti was tired of the tedious homework, so he opened up an old programming problem he created years ago.You are given a connected undirected graph with n vertices and m weighted edges. There are k ...原创 2019-01-29 20:41:38 · 400 阅读 · 0 评论 -
Codeforces 1132 problem D Stressful Training —— 二分+并查集
Berland SU holds yet another training contest for its students today. n students came, each of them brought his laptop. However, it turned out that everyone has forgot their chargers!Let students be ...原创 2019-04-12 17:14:56 · 227 阅读 · 0 评论 -
“美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)C 小花梨判连通 —— 求k张图中的共同联通块
This way题意:给你k张图,问你每个点在左右图中都连通的点有几个。题解:一开始是用并查集维护每一块内的最小值,在下一张图的时候如果原本连通就重连,不连通就不连,但是这会导致一个问题,假设这张图中1 2 3 4连通,5 6连通,下一张图中1 5连通,1 6连通,但是由于这两个在前一张图中不连通,那么我就不会连,所以wa了2个小时。。。那么现在我记录每一个块,每来一张图就对对每一个块做...原创 2019-05-20 09:35:31 · 243 阅读 · 0 评论 -
Codeforces Contest 1156 C Match Points —— lower_bound
This way题意:给你n个数,让他们两两配对,要求每个数最多只有一个数与它匹配,并且两个数的差>=z,问你最大有多少对数可以匹配题解:非常敢单,但是有一些细节问题要注意一下。首先我是先排序,再用lower_bound来做,但是lower_bound的时候要注意每个数只能找后半部分的数,因为找前面的数会出现一个问题:假设有1,10,15,20这四个数,z是9,那么如果lower_...原创 2019-07-09 20:40:09 · 188 阅读 · 0 评论 -
USACO 2018 January Contest, Gold Problem 1. MooTube —— 并查集+离线求树上最小边长>=k的节点数
This way题意:一棵树,每条边上有边权,点a到点b的值是他们路径上的最小值。q个询问,每次问你与有多少点与x的值>=k。题解:这道题目可以离线处理,我们假设长度>=k表示这条边存在,那么这道题的意思就是说x所在的联通块的大小有多大。那么我们按照k从大到小排序,利用并查集做即可。#include<bits/stdc++.h>using namespace s...原创 2019-07-17 19:01:49 · 209 阅读 · 0 评论 -
2019牛客暑期多校训练营(第八场)E Explorer —— 搜索型线段树,LCT
This way题意:给你一张图,每条边都有能通过的数组范围,问你有多少种数字能够从1到n题解;这个主要有线段树和LCT两种各做法,然而我在比赛的时候一种都没做出来。。线段树就像前两天查中位数那道题一样的建树方法,也就是用r+1代替r,这样的话b[r+1]-b[l]代替b[r]-b[l]+1,省下可能出现的错误。虽然这里没有push_down。之后我们用vector记录每个区间所拥有的边...原创 2019-08-12 19:09:23 · 397 阅读 · 0 评论 -
Codeforces Gym 101480 E Export Estimate —— 并查集+想法
This way题意:给你一张图,每条边都有一个边权,现在给你一个值k,让你删除边权<k的边,在之后删除所有没有边的点,然后按照序号做以下操作:1.这个点只有两条边并且都不是连向自己,做以下操作:将两条边连向的两个(可能是一个)点连边,删除这两条边并且删除这一个点现在问你最后剩下多少个点和多少条边。首先可以肯定的是从大到小做,这样就可以一直加边而不用删边。那么剩下的是什么点?...原创 2019-09-22 20:35:56 · 321 阅读 · 0 评论 -
Codeforces 1140 F Extending Set of Points —— 线段树分治+并查集
This way题意:每次给你一个二元组,如果这个二元组不存在,就插到集合S中,如果存在,就将其删除。并且,你现在有一个集合R,R=S,接下来重复一个操作,如果S中有三个点(x1,y1),(x2,y1),(x1,y2)且没有(x2,y2),将(x2,y2)插到R中。每次输入结束之后,问你R集合中有多少个点题解:对于每一个点,将它y所属的集合加到x所属的集合中,然后对于这个集合的答案就是...原创 2019-09-26 18:39:20 · 174 阅读 · 0 评论 -
B. Chemical table
Innopolis University scientists continue to investigate the periodic table. There are n·m known elements and they form a periodic table: a rectangle with n rows and m columns. Each element can be desc...原创 2018-08-15 21:58:07 · 464 阅读 · 0 评论