并查集
文章平均质量分 71
Brightess
湖南城市学院在读,大四学生
展开
-
VK Cup 2017 - Round 1 A - Bear and Friendship Condition(并查集维护大小 + dfs 遍历图统计边数)
并查集 dfs原创 2023-05-04 18:07:53 · 845 阅读 · 0 评论 -
2022牛客寒假2 小沙的算数(并查集解法 乘法逆元)
#include<bits/stdc++.h> using namespace std; #define int long long const int N = 2e6+10, mod = 1e9+7; int n, q; char op[N]; int num[N]; int pro[N]; int p[N]; int Find(int x) { if(p[x]!=x) p[x] = Find(p[x]); return p[x]; } int qm...原创 2022-05-05 11:17:49 · 636 阅读 · 0 评论 -
luogu p2661 信息传递(路径压缩并查集求最小环)
题目描述 有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti的同学。 游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自 己的生日时,游戏结束。请问该游戏一共可以进行几轮? 输入格式 共2行。 第1行包含1个正整数 n ,表示原创 2021-09-28 19:16:13 · 176 阅读 · 0 评论 -
并查集讲解 + AcWing 1250. 格子游戏(并查集判环 )
并查集的回顾: 并查集用树的形式维护所有的集合(不一定是二叉树),每一个集合的编号是根节点的编号。对于每个点x我们都存储一下它的父节点p[x]。 并查集的操作:(三点核心) 一、初始化: 初始化将每个点的父节点设为自己即可。 O(n) 代码实现: void init(int n) { for(int i=1;i<=n;++i)//下标是0是1灵活变化即可 { p[i] = i; } } 下面两个并查集基本操作都是近...原创 2022-02-10 18:43:32 · 1370 阅读 · 0 评论 -
AcWing 1252. 搭配购买(并查集维护01背包)
并查集维护01背包 题意: 思路: 利用并查集把必须一起购买的_uinion一起,注意合并的时候要同时维护额外的价格和价值(v[],w[]),这两个 额外的变量我们定义只对根节点有意义(p[x]==x的节点,这一点在合并代码和01背包代码中均有体现),之后 将一个集合中的所有云朵看做一个物品,转化成经典的01背包问题。 #include<bits/stdc++.h> using namespace std; int n, m, vol; const int N = 1e4+10; in...原创 2022-02-10 19:36:28 · 451 阅读 · 0 评论 -
AcWing 237. 程序自动分析(第二类离散化 并查集)
题意: 输入若干对 两未知数xi、xj 相等 和 不等 的约束条件,判断输入的约束条件是否矛盾。 举例: 输入一组约束条件:x1=x2,x2=x3,x3=x4,x1≠x4 ,则显然这组约束条件是存在矛盾的,因为前三个可以推出x1=x4,而第四个条件x1≠x4与之矛盾。 思路: 分析一下上面的举例,我们可以发现这组约束条件中**“相等”的约束条件可以看做是一个并查集合并的过程,如x1=x2,相当于是将x1,x2合并到一个集合的操作,而“不等”**的约束条件,如x1≠x4相当于是在说x1和x4不属于一个集...原创 2022-02-11 10:57:22 · 608 阅读 · 0 评论 -
AcWing 238. 银河英雄传说(并查集 维护树大小、节点与祖宗节点的距离)
自认为不能将本题的各种细节和注意点讲得尽善尽美,因此将一位dalao的题解拖了过来,我的任务就是将代码写好,并稍微更改一下排版,使之阅读体验更佳。 题意: 有 T 条指令,指令格式分为以下两种: M i j:让第 i 号战舰所在列的全部战舰保持原有顺序,接在第 j 号战舰所在列的尾部。(_union) C i j:询问第 i 号战舰与第 j 号战舰当前是否处于同一列中(if(find(i)==find(j))),如果在同一列中,它们之间间隔了多少艘战舰。如果不在同一列,则输出“-1”。 思路: 以前...原创 2022-02-11 16:27:04 · 479 阅读 · 2 评论 -
AcWing 239. 奇偶游戏(边带权/扩展域并查集 离散化 xor)
题意: 有一个长度为n的序列,给出m条限制,给出区间[l,r]和parity(中文意思是奇偶性)。 ①parity == "odd" 表示[l,r]区间内'1'的个数是奇数。 ②parity == "even" 表示[l,r]区间内'1'的个数是偶数。 请你输出最小的不满足条件的编号减一,如果全部满足,输出限制条件总数m。 思路: 对于本题我们可以有两种做法,第一种是“边带权”并查集,第二种是“扩展域”并查集。 一、 由题意,我们很容易了解到,这个题描述的是区间关系,而并查集只能作用于两个点的关系,因...原创 2022-02-12 13:08:13 · 2752 阅读 · 0 评论