![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
并查集
文章平均质量分 73
Union-Find
逍遥Fau
为伊蕾娜献上心脏!
展开
-
AcWing4084 号码牌 (并查集 / bitset优化Floyd)
题目链接: 号码牌大致题意给定一个长度为nnn的序列, 第iii个位置的值为aia_iai. (保证aaa是111~nnn的一个排列)每个位置还有一个值did_idi, 若满足∣i−j=di∣|i-j=d_i|∣i−j=di∣, 表示位置iii和位置jjj可以进行任意次交换.问: 能否使得最终的序列满足ai=ia_i = iai=i.解题思路并查集 (数据太小了, 比赛时写了个Floyd)由于两个位置的交换次数是任意次. 因此, 如果xxx和yyy可以交换, 且yyy和zzz可以交换原创 2021-12-05 10:13:55 · 481 阅读 · 0 评论 -
P2391 白雪皑皑 (并查集)
题目链接: P2391 白雪皑皑大致题意有nnn个位置, 初始每个位置都未被染色(初值为0).接下来要进行mmm次染色操作, 第iii次把[l,r][l, r][l,r]染色为颜色iii. (后一次染色会覆盖前一次染色).问: 最终每个位置的颜色是什么.解题思路并查集由于后面的操作会覆盖掉前面的操作, 因此我们不妨 “倒着”进行染色.我们如果保证每个位置只被访问一次的话, 这样我们就可以做到线性的复杂度.我们通过并查集来维护, 对于位置iii而言, p[i]p[i]p[i]表示[i,n][原创 2021-10-29 18:41:26 · 446 阅读 · 0 评论 -
Codeforces1594D The Number of Imposters (并查集)
题目链接: The Number of Imposters大致题意有nnn个人, mmm个关系.关系以a b c的形式给出, 当c==0c==0c==0时, 表示aaa说bbb是好人, 反之表示aaa说bbb是坏人.好人只会说真话, 坏人只会说假话. 每个人只能是好人或坏人中的一种.问: 这mmm对关系中是否存在矛盾, 如果有矛盾则输出"-1", 反之输出最大的坏人数量.解题思路并查集 (读完题一看, 这不是典中典?)首先我们考虑ccc的不同取值下的情况:对于a b 0的形式, 表示aaa原创 2021-10-09 15:34:19 · 712 阅读 · 0 评论 -
食物链(两种方法) (NEW)
题目链接: 食物链大致题意这题太经典了, 略!解题思路记录两种并查集方法: 扩展域和带权.AC代码1(扩展域做法)#include <iostream>#include <cstdio>#define rep(i, n) for (int i = 1; i <= (n); ++i)using namespace std;typedef long long ll;const int N = (5E4 + 10) * 3; //有几种, 则空间需要多开几倍/原创 2020-11-09 23:28:55 · 383 阅读 · 0 评论 -
食物链
题目连接: 食物链大致题意:有三种动物, 共有N个, 组成A->B->C->A的食物链关系, 有k个说法, 让你判断其中的假话.假话: ①前面的真话冲突 ②动物编号超过N ③同类吃同类解题思路:并查集. 维护集合中节点到根节点的距离(%3计算).假设某种动物是0(根节点), 则吃他的生物为1, 被他吃的生物为2, 同类则也为0. (距离%3后的结果)我们在进行判断的时候, 一定是判断当前这个生物与他所在集合中根节点的情况, 所以找查函数中, 我们必须要对每个节点进行路径压缩,原创 2020-07-12 23:13:13 · 146 阅读 · 0 评论