2. 思路详解实际上,在做这道题之前,我对并查集的了解就只停留在权重选择和压缩路径上。也就是大家司空见惯的那种模板。顺带再默写一遍复习一下:highlighter- arduino #include <vector> using namespace std; class unionfind { public: vector<int> id, rank; void init(int n){ id.clear(); rank.clear...
接下来应用这种思路写POJ的2492 题意:就是说有N个虫子,异性交配,但现在不知道虫子的性别,现在给出M个事件,问会不会出现同性交配的现象 思路:创建两个组,维护(x,y+n),(y,x+n) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...
所以就有人另开思路,这里介绍一个十分巧妙的思路。 一般我们都会把一个动物当成一个节点,然后去执行并查集等操作。但是有位大牛另辟蹊径,给每个动物赋予三个节点(n,2n,3n),这样就将并查集的节点数量扩展到3n,用并查集维护这3n个节点的信息就行。下面是具体的思路和操作: 1 先来考虑什么情况下a和b两个动物是同...
poj1182~食物链~种类并查集 思路:首先需要这个小技巧,不然很难写 kind[a]=0表示a与父节点属于同一类。kind[a]=1表示a吃父节点。kind[a]=2表示父节点吃a。 (后二种情况下的赋值可以改变,但对后续有点小影响)1.有一种关系b是a父节点,c是b父节点, a与c的关系可以表示为 (kind[a]+kind[b])%3 (延...
不同树合并且更新关系 (x 树做主根) '如果 x 和 y 为关系 r1, y 和 z 为关系 r2, 那么 x 和 z 的关系就是(r1+r2)%3如果 d==1 则 x 和 y 是同类 ,那么 y 对 x 的关系是 0, 如果 d==2 , 则 x 吃了 y, 那么 y 对 x 的关系是 1, x 对 y 的关系是 2。综上所述 , 无论 ...
题目链接:http://poj.org/problem?id=1182 解题思路: 这道题是并查集题目中的经典。。。而且比普通并查集提高了一个档次,下面在基础并查集的前提上讲解并查集的真正用法。 基础回顾: find()函数找根结点的两种写法如下: 第一种递归: int find(int x) { return x == pre[x] ? x : find(pre[x]); } ...
poj 1182 食物链(转) POJ 题解 2009-09-27 17:43:11 阅读 516 评论 2 字号:大中小 题目描述: http://acm.pku.edu.cn/JudgeOnline/problem?id=1182 建议:做此题之前先做 poj 2524 和 poj 1611。这两道题都是并 查集的基础应用。 关键词:并查集 相对关系 思路: (用一个并查集就够了,同时对每个...
思路 该问题是种类并查集问题,我们需要对食物链中的关系进行分析。 如果仅仅是要求分析出有几个物种的话,直接使用并查集的模板套上去就行了。但是,由于本题需要计算出哪些动物是同种、以及不同种类动物间的捕食关系,还要判断当前输入的信息和之前已经存在的是否产生冲突,因此,我们需要拓宽并查集的范围,来处理上述信息。
思路 该问题是种类并查集问题,我们需要对食物链中的关系进行分析。 如果仅仅是要求分析出有几个物种的话,直接使用并查集的模板套上去就行了。但是,由于本题需要计算出哪些动物是同种、以及不同种类动物间的捕食关系,还要判断当前输入的信息和之前已经存在的是否产生冲突,因此,我们需要拓宽并查集的范围,来处理上述信息。
2014-08-17 15:07 −题目链接 题意 : 中文题不详述。 思路 : 转载自…… Part I - 权值(relation)的确定。 我们根据题意,森林中有3种动物。A吃B,B吃C,C吃A。 我们还要使用并查集,那么,我们就以动物之间的关系来作为并查集每个节点的 权值。 注意,我们不知道... ...