首页 > [NOI2001]食物链
头像 白给怪
发表于 2020-06-02 17:13:30
题目链接:https://ac.nowcoder.com/acm/problem/16884刚看到这道题的时候听懵逼的,只能看出来是并查集,但觉得要加上权值做法很复杂 ,后来听毛毛雨姐姐讲完课以后顿悟了,只要将n的数量级开三倍,来表示三个层次就能解决问题,简化了不少。思路:将数组开3倍大,a表示自身 展开全文
头像 Bernard5
发表于 2020-06-05 16:48:37
中文题,题意没什么好说的。 和这题一样,可以手写逻辑,但是需要手写个逻辑,太麻烦了。 解决本题有两种方案,一种是带权并查集,一种是完全合并,有些人觉得后者好理解,本菜鸡并不觉得,而且它还要开三倍空间,所以本篇选择带权并查集来解决本题,但是如果你想要学习这种方法,我推荐这篇博客。 带权的并查集有更加广 展开全文
头像 Eihuvita.
发表于 2020-12-03 23:51:00
食物链 题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是“1 X Y”,表示 展开全文
头像 sunny_forever
发表于 2021-08-06 21:19:12
法1:三倍空间,种类并查集 类似于:https://ac.nowcoder.com/acm/problem/16591 Code #include <bits/stdc++.h> using namespace std; const int N = 3e5; int fa[N]; 展开全文
头像 sunrise__sunrise
发表于 2020-06-08 08:37:41
并查集 测谎话,并查集的基础作用,我们开个3 * n的数组,每n个元素看成是同类,其余跨种族。 我们把输入的x和y进行找种族,如果存在冲突+1即可,雨巨也教的比较明白了,白嫖课大家可以去康康吖。 安利一波江大佬的带权并查集不用开3 * n的空间,保存n的大小,对3取模。传送门 #pragma G 展开全文
头像 在刷题的单身狗很开心
发表于 2023-09-21 15:02:31
扩展域并查集解决了有多种相互关系的问题。这题如果单纯的去判断是不是同类就是用普通的并查集就可以了。但由于有想吃的关系,所以得使用扩展域并查集,有三种动物,将并查集的数组扩大三倍。对于某x,y两个动物是同类的情况这两个动物可能是A,B,C任意一种。那么将x,y合并。x+n,y+n合并。y+2*n,x+ 展开全文
头像 CH_cycyc
发表于 2025-01-09 12:57:19
链接:https://ac.nowcoder.com/acm/contest/22904/1024 来源:牛客网 题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。 现有N个动物, 展开全文
头像 2022115886
发表于 2023-08-12 14:17:05
主要考察加权并查集 更加深入的考察并查集知识,在并查集中加入关系域,关系域会随着加入数据的内容进行实时更新。 c++代码如下: #include <bits/stdc++.h> using namespace std; const int N=1e8+7; int n,k; int d, 展开全文
头像 灯又烬
发表于 2020-06-02 08:58:44
题意 存在一个环形食物链,即a->b->c->a,给出m条语句,均为两个动物是同一种,或者a吃b,问有多少句是假的,先入为主,若两句冲突,第一句为真。 题解 使用并查集。以每个动物自身等级为基准,设定所有其他动物的等级,具体表现就是:开n*3的数组,a代表a所在等级,a+n代表吃a 展开全文
头像 tin_t
发表于 2020-06-03 15:27:08
链接:https://ac.nowcoder.com/acm/problem/16884 题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说 展开全文

等你来战

查看全部