![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
tomjobs
别慌,慌也没用
展开
-
LeetCode 952. 按公因数计算最大组件大小(并查集)
给定一个由不同正整数的组成的非空数组 A,考虑下面的图:有 A.length 个节点,按从 A[0] 到 A[A.length - 1] 标记;只有当 A[i] 和 A[j] 共用一个大于 1 的公因数时,A[i] 和 A[j] 之间才有一条边。返回图中最大连通组件的大小。思路:将每个数质因数分解,得到的素因子个数很少。然后按照素因子为单位进行并查集连接(一个数包含的所有素因子全部并在一起),最后按照数字个数统计并查集大小。class Solution {public: Solutio原创 2021-10-23 15:23:51 · 272 阅读 · 0 评论 -
Codeforces F. Imbalance Value of a Tree(并查集加排序,树)
题意:求出树中所有路径最大值减去最小值之和思路:美团笔试遇到了这题,这里再学习一下。首先考虑简单版本,求出所有路径最大值之和。可以先将所有点按照值排序,然后依次取,每次只考虑所有取出的点,当前的点就是所有点中的最大值点。通过并查集统计点的数目再计数。最小值和也是一样的,将值取负就可以了。具体统计的细节可以看代码,挺好懂的,一个计数问题。#include <cstdio>#include <cstring>#include <algorithm>#incl原创 2021-10-11 12:22:06 · 239 阅读 · 0 评论 -
LeetCode 765. 情侣牵手(并查集/贪心)
思路:(完全是被题目名字吸引)每个人编号为row[i]row[i]row[i],那么其对应组号就为row[i]/2row[i]/2row[i]/2,这保证x,x⊕1x,x⊕1x,x⊕1在同一组。然后我们将相邻两个位置数对应组号连边,也就是row[i]−>row[i+1],i为奇数row[i]->row[i+1],i为奇数row[i]−>row[i+1],i为奇数,用并查集维护。这样的话得出一个kkk元环就只需要k−1k-1k−1次操作,那么只需要看并查集最后形成几个连通块就好了。.原创 2021-02-24 13:17:19 · 211 阅读 · 0 评论 -
AcWing 258. 石头剪子布(扩展域并查集)
N个小朋友(编号为0,1,2,…,N-1)一起玩石头剪子布游戏。其中一人为裁判,其余的人被分为三个组(有可能有一些组是空的),第一个组的小朋友只能出石头,第二个组的小朋友只能出剪子,第三个组的小朋友只能出布,而裁判可以使用任意手势。你不知道谁是裁判,也不知道小朋友们是怎么分组的。然后,孩子们开始玩游戏,游戏一共进行M轮,每轮从N个小朋友中选出两个小朋友进行猜拳。你将被告知两个小朋友猜拳的胜负结果,但是你不会被告知两个小朋友具体使用了哪种手势。比赛结束后,你能根据这些结果推断出裁判是谁吗?如果可以原创 2021-01-21 00:05:11 · 319 阅读 · 0 评论 -
Codeforces 1463 E. Plan of Lectures(缩点,拓扑排序)
题意:要求你构造一个nnn的排列,要满足:a[i]a[i]a[i]出现在iii之前,如果a[i]=0a[i]=0a[i]=0代表这个数没有限制。仅对条件一保证一定有解。有kkk个特殊对(i,j)(i,j)(i,j),要求满足iii在排列中一定在jjj的左边。询问是否存在这样的排列。思路:这场的EEE题简单的贪心和模拟就可以解决XD。假设没有特殊对,那么直接按照条件1的限制跑一次拓扑排序(条件一实际构成了一个DAG图)。有特殊对后,因为特殊对是要排列在一起的,所以不妨直接并查集缩点。将这原创 2020-12-18 23:37:13 · 1288 阅读 · 11 评论 -
AtCoder Regular Contest 107 C - Shuffle Permutation(并查集)
思路:如果xxx行能和yyy行,zzz行交换,那么yyy行也可以和zzz行交换。所以把能互相交换的部分(行,列)用并查集合并起来。每个能互相交换的连通块的总方案数就是连通块大小的阶乘。#include <cstdio>#include <cstring>#include <vector>#include <algorithm>#include <queue>using namespace std;typedef long lon.原创 2020-11-14 21:37:54 · 184 阅读 · 0 评论 -
ACWING 257. 关押罪犯(并查集判奇环,二分+二分图判断)
S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为 c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为 c 的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到 S 城 Z 市长那里。公务繁忙的 Z 市长只会去看列表原创 2020-11-06 17:22:36 · 305 阅读 · 3 评论 -
Codeforces1445 E. Team-Building(可撤销并查集,并查集判奇环)
The new academic year has started, and Berland’s university has ???? first-year students. They are divided into ???? academic groups, however, some of the groups might be empty. Among the students, there are ???? pairs of acquaintances, and each acquaintan原创 2020-11-06 15:06:03 · 319 阅读 · 0 评论 -
2020秦皇岛CCPC 7-2 Bounding Wall(树状数组+二分,并查集)
题意:一个n*m的方格,每个格子可以是’#‘或者’.‘ 。每次操作可以改变一个格子的状态,或者询问经过(x,y)的最大方框面积,且这个方框不能经过’.’ 。思路:思路参考自大佬每次询问一个点(x,y)(x,y)(x,y),我们只需要考虑以这个点为矩形下边的情况,然后枚举上面那条边。其他的情况只需要将方格旋转90°/180°/270°即可。我们维护每个点最左边/右边/上边的’.'位置。那么每次修改点,只需要单独维护出这个点左边/右边/上边的位置,复杂度O(n+m)O(n+m)O(n+m)。你想想原创 2020-10-23 12:19:39 · 290 阅读 · 0 评论 -
牛客多校第八场 Interesting Computer Game(并查集)
题意:每次给你两个数字,你可以选一个之前没选过的数字,求最多能选多少个。思路:很容易想到最大流,但是1e5的大小肯定不是让你跑网络流的(二分图匹配除外)。每次给出的两个点连边,最后如果得到一个树,那么树中一个节点肯定不能选,如果是有环图,那么可以选环中所有节点。所以用并查集维护这个连通分量是否有环就好了。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>原创 2020-08-04 00:26:23 · 319 阅读 · 0 评论 -
2020杭电多校第三场 Little W and Contest(并查集,组合数学)
Problem DescriptionThere are n members in our ACM club. Little W wants to select three persons from our club to form a new team taking part in provincial ACM contests, as it is known by all of us that any ACM contest requires a normal team to have three m原创 2020-07-29 14:55:42 · 334 阅读 · 0 评论 -
2020杭电多校第二场 Total Eclipse(并查集,逆向加点)
Problem DescriptionThere are n cities and m bidirectional roads in Byteland. These cities are labeled by 1,2,…,n, the brightness of the i-th city is bi.Magician Sunset wants to play a joke on Byteland by making a total eclipse such that the brightness of原创 2020-07-25 20:37:25 · 324 阅读 · 0 评论 -
牛客多校第三场 G. Operating on a Graph(并查集,链表)
题意:有n个group,每个group都初始只有一个点m次询问,每次询问给出一个group,则这个group里面点所连的点连在这个group上。问最后每个点属于哪个group思路:一个点通过邻接边连接其他点称为发挥作用,则每个点最多只会发挥一次作用,所以只需要维护每个group里面还有多少没有发挥作用的点即可。维护group可以用并查集,维护多少没发挥作用点可以用链表合并。#include <cstdio>#include <cstring>#include &l.原创 2020-07-20 10:56:52 · 242 阅读 · 0 评论 -
AcWing 239. 奇偶游戏(带权并查集,扩展域并查集)
小A和小B在玩一个游戏。首先,小A写了一个由0和1组成的序列S,长度为N。然后,小B向小A提出了M个问题。在每个问题中,小B指定两个数 l 和 r,小A回答 S[l~r] 中有奇数个1还是偶数个1。机智的小B发现小A有可能在撒谎。例如,小A曾经回答过 S[1~3] 中有奇数个1, S[4~6] 中有偶数个1,现在又回答 S[1~6] 中有偶数个1,显然这是自相矛盾的。请你帮助小B检查这M个答案,并指出在至少多少个回答之后可以确定小A一定在撒谎。即求出一个最小的k,使得01序列S满足第1k个回答原创 2020-07-11 11:42:53 · 272 阅读 · 0 评论 -
ICPC Central Europe Regional Contest 2019 Saba1000kg(并查集分块)
There are many different streams in Viking rock movement. Old Icelandic granite rock, Middle Danish dusty Viking rock, Late Finngail dark green rock, Fjord boulder avalanche rock, and many others, a complete list of all popular streams would overflow this原创 2020-06-21 21:56:41 · 561 阅读 · 0 评论 -
Artwork Gym - 101550A(并查集)
题意:n*m的白格子,每次将一些部分涂黑,求剩下几个白格连通块思路:假设是顺序涂黑,然后问黑格子连通块有多少个,那就是并查集裸题。本题中顺序考虑很难。考虑逆向,假设全部涂完了,对每个白格子再往周围遍历一次,用并查集将相邻白格子连起来,Union操作成功一次,连通块减少一个。就可以算出此时的白色连通块。然后删除一个黑格子,实际上多了个白格子,算作多了个连通块。然后再用这个白格子遍历周围白格子,进行Union操作,Union成功了连通块减少一个。#include <iostream>.原创 2020-06-14 15:19:46 · 234 阅读 · 0 评论 -
AcWing 145. 超市(优先队列 / 并查集)
超市里有N件商品,每个商品都有利润pi和过期时间di,每天只能卖一件商品,过期商品(即当天di<=0)不能再卖。求合理安排每天卖的商品的情况下,可以得到的最大收益是多少。输入格式输入包含多组测试用例。每组测试用例,以输入整数N开始,接下里输入N对pi和di,分别代表第i件商品的利润和过期时间。在输入中,数据之间可以自由穿插任意个空格或空行,输入至文件结尾时终止输入,保证数据正确。...原创 2020-03-07 23:51:25 · 197 阅读 · 0 评论 -
Prefix Enlightenment CodeForces - 1291E(扩展域并查集)
There are n lamps on a line, numbered from 1 to n. Each one has an initial state off (0) or on (1).You’re given k subsets A1,…,Ak of {1,2,…,n}, such that the intersection of any three subsets is empt...原创 2020-02-14 22:35:58 · 369 阅读 · 0 评论 -
Secret Passwords CodeForces - 1263D(并查集)
One unknown hacker wants to get the admin’s password of AtForces testing system, to get problems from the next contest. To achieve that, he sneaked into the administrator’s office and stole a piece of...原创 2020-01-31 15:56:16 · 278 阅读 · 0 评论 -
D. Harmonious Graph cf1253(并查集)
You’re given an undirected graph with ???? nodes and ???? edges. Nodes are numbered from 1 to ????.The graph is considered harmonious if and only if the following property holds:For every triple of integers ...原创 2019-11-17 18:57:18 · 513 阅读 · 0 评论 -
洛谷P2024 [NOI2001]食物链(带权并查集,扩展域并查集)
题目描述动物王国中有三类动物 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 。此人...原创 2019-11-15 20:45:06 · 239 阅读 · 1 评论 -
洛谷P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver(并查集)
展开题目描述Farmer John and his cows are planning to leave town for a long vacation, and so FJ wants to temporarily close down his farm to save money in the meantime.The farm consists of NN barns connect...原创 2019-11-15 13:19:59 · 219 阅读 · 0 评论 -
BZOJ1015. [JSOI2008]星球大战starwar(离线并查集)
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。 但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也...原创 2019-10-10 20:58:21 · 270 阅读 · 0 评论 -
BZOJ1050. [HAOI2006]旅行comf(并查集,生成树)
Description给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000)。给你两个顶点S和T,求一条路径,使得路径上最大边和最小边的比值最小。如果S和T之间没有路径,输出”IMPOSSIBLE”,否则输出这个比值,如果需要,表示成一个既约分数。 备注: 两个顶点之间可能有多条路径。Input第一行包含两个正整数...原创 2019-10-09 18:51:00 · 227 阅读 · 0 评论 -
BZOJ1854: [Scoi2010]游戏(并查集建图,贪心)
Descriptionlxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示。当他使用某种装备时,他只能使用该装备的某一个属性。并且每种装备最多只能使用一次。 游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装备所使用的属性值必须从1开始连续递增地攻击,才能对boss产生伤害。也就是说一开始的...原创 2019-08-23 15:29:03 · 219 阅读 · 0 评论 -
AcWing 237. 程序自动分析(并查集加离散化)
在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。例如,一个问题中的约束条件为:x1=x2,x2=x3,x3=x4,x1≠x4,这些约束条件显然是不可能同时被满...原创 2019-08-20 19:28:24 · 166 阅读 · 0 评论 -
238. 银河英雄传说(带权并查集)
银河英雄传说题目提交记录讨论题解视频讲解有一个划分为N列的星际战场,各列依次编号为1,2,…,N。有N艘战舰,也依次编号为1,2,…,N,其中第i号战舰处于第i列。有T条指令,每条指令格式为以下两种之一:1、M i j,表示让第i号战舰所在列的全部战舰保持原有顺序,接在第j号战舰所在列的尾部。2、C i j,表示询问第i号战舰与第j号战舰当前是否处于同一列中,如果在同一列中...原创 2019-08-20 18:49:30 · 227 阅读 · 0 评论 -
B.“提莫队长正在待命!”(并查集求连通块)
Description迅捷斥候·提莫作为班德尔城安全的侦察兵首领,也是班德尔城最富盛名的特种部队之一“主舰斥候队”一员,平时他会在各处巡逻保证班德尔城的安危。我们现在可以把班德尔城看做由nn个小城镇组成的大城市,在这nn个城市之间有n-1n−1条道路将这nn个小城镇连接起来(也就是说这nn个小城镇形成了一个树形的结构)。由于城镇太多,提莫一个人无法把所有的城镇巡逻到,所以他会在某些道路上种上...原创 2019-03-27 09:38:00 · 486 阅读 · 0 评论