食物链专题

poj 1182 并查集 食物链类

题意: 有n只动物,分别编号1....n。所有动物都属于A,B,C中的一种,已知A吃B,B吃C,C吃A。 按顺序给出下面两种共K条信息: 1. x 和 y 属于同一类。 2. x 吃 y 。 然而这些信息可能会出错,有可能有的信息和之前给出的信息矛盾,也有的信息可能给出的 x 和 y 不在n的范围内。 求k条信息中有多少条是不正确的。 解析: 对于每只动物,创建3个元素 i

poj1182 食物链 (种类并查集)

Description 动物王国中有三类动物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。  此人对N

codevs 1074食物链 并查集

a和b之间有三种关系,a和b同类,a吃b,b吃a,用a+n表示a吃的,a+2*n表示吃a的。与关押犯人一样,但这里要影射出2种虚拟的才足以表示出关系。 #include<cstdio>#include<iostream>using namespace std;int n,k,d,x,y;int fa[200000];int find(int x){return x==fa[x]?

POJ 1182 食物链(并查集较高级的应用)

食物链 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 50803 Accepted: 14851 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。  现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。

POJ 1703 POJ 2492 并查集 和 食物链差不多

用 a 表示 a 在组织 1 ,a+MAX 表示 a 在组织2 遇到 D,就把 a 在组织1 和 b在组织2 放入一个集合,把 a 在组织2 与 b 在组织 1 放入一个集合。 若查相同,则 same(a,b) 为true 若查不同,则 same(a,a+MAX) 为 true 否则就是不确定 这个题在查的时候是使用 || 来查 和使用 && 来查是一样滴,因为只给出 a b 不同是无法

食物链(POJ-1182)

Problem Description 动物王国中有三类动物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。  此人对N个动

POJ1182 食物链 【并查集变种】

挺简单的 N个元素扩展为 3*N个 i-A i-B i-C A吃B吃C吃A 挑战程序设计的89面 #include <cstdio>#include <cstdlib>#include <iostream>#include <cstring>#include <cmath>using namespace std;int N,K;const int MAX_N=333333;

Poj 1182 食物链--带边权的并查集

食物链 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 35967 Accepted: 10441 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。

POJ1182——食物链(种类并差集)

非常经典的并查集。 其实关键还是要找到各个种类之间的转化关系,其实枚举找规律就可以。一开始的时候把关系式推错了,所以一直WA。 还有这题比较坑的地方是只能单组数据,不能写成!=EOF #include <algorithm>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include

poj 1988 Cube Stacking (poj 1182 食物链(转))

昨晚上和今一早,做了食物链后,便做了这个题,做的郁闷。刚开始的时候我拿最下面的当根节点,做出来后发现这样会漏情况的。比如:11M 1 10M 2 10M 3 10M 4 10M 5 10M 10 6C 10C 4M 4 8C 3C 4 这组测试数据,在M 4 8 合并后,元素3的下方就会漏掉一个箱子。 后来实在没办法了,上网看了看,大家都是以最上面的为根节点o(╯□╰)o(自己好笨。。。),那样

poj 1182 食物链(转)

*食物链,自己还是不会做,刚开始搞的太乱。后来网上看了看解题报告,认真看了一遍,后来照自己开始写,几乎完成了全部,只是有一个判断真假的式子实在退步出来了,又看了一眼,后来还是WA,于是把循环输入给改了才AC,看了大牛的思路,题是懂了,但是自己单独就是编不上啊。。很郁闷。。 借鉴大牛然后自己总结了点思路:变种的并查集。其实这个还是两个元素之间的集合关系,最后都要并在一个集合里,只不过,每类元素

洛谷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 吃

(Luogu) P2024 [NOI2001]食物链 (并查集)

传送门 解题思路:将并查集分为三个部分 分别是同类,猎物 ,天敌,取x(x属于1~n)举个栗子,与x一块的为x的同类,与x+n为一块的为x的猎物,与x+2*n为一块的为x的天敌。我们只需要同时维护这三个部分,并用来判断假话即可。由于只有A,B,C三种动物,那么A猎物的猎物就是A的天敌这需要注意维护。代码如下: #include<cstdio>#include<iostream>#inclu

Vijos P1531 食物链

没看懂偏移向量和拆点 用的带权并查集水过去的 注意先判断 是否大于n 可能有 1 n+1 n+1 #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int MAXN = 50000+10;int fa[MAXN],fv[M

POJ-1182-食物链(并查集经典题)

//传送门:http://poj.org/problem?id=1182#include <queue>#include <functional>#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <stack>#include <vector>#include

并查集例题(食物链)C++(Acwing)

代码: #include <iostream>using namespace std;const int N = 50010;int n, m;int p[N], d[N];int find(int x){if(p[x] != x){int t = find(p[x]);d[x] += d[p[x]];p[x] = t;}return p[x];}int m

P2024 [NOI2001] 食物链 带权并查集 循环关系

题目:  P2024 [NOI2001] 食物链 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)  本文学习自:  题解 P2024 【食物链】 - RE: 从零开始的异世界信竞生活 - 洛谷博客 (luogu.com.cn)  ———— 关系并查集其实就是在普通并查集的基础上额外开个数组re,用来表示每个点与其根节点的关系。 这个其实很好理解。设0为同类,1为该点吃

食物链(转自yekehe2002大神)

食物链 (eat.pas/c/cpp) 【 问题描述】 动物王国中有三类动物 A,B,C, 这三类动物的食物链构成了有趣的环形。 A 吃 B, B 吃C, C 吃 A。现有 N 个动物, 以 1-N 编号。 每个动物都是 A,B,C 中的一种, 但是我们并不知道它到底是哪一种。 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: 第一种说法是“ 1 X Y” , 表示 X 和 Y

(ssl1224)P2024 食物链(difficult)

食物链(difficult) Time Limit:10000MS Memory Limit:65536K Total Submit:121 Accepted:44 Case Time Limit:1000MS Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都

P4017 最大食物链计数

Problem: P4017 最大食物链计数 文章目录 思路解题方法复杂度Code 思路 这是一个关于食物链计数的问题。给定一个有向图,图中的每个节点表示一个生物,边表示食物链关系。每个节点的入度表示它的食物链数量。要求计算出所有节点的食物链数量之和。 解题方法 这个问题可以使用拓扑排序和动态规划的方法来解决。首先,我们需要构建一个有向图,使用链式前向星的方式

洛谷_2024 食物链

题目 题意: 给出n只动物和k句话,判断这k句话里有几句假话。 思路:     题目中告诉了我们假话的几种情况: • 当前的话与前面的某些真的话冲突,就是假话 • 当前的话中 X 或 Y 比 N 大,就是假话 • 当前的话表示 X 吃 X,就是假话 我们可以用x表示同类,x+n表示猎物,x+2n表示天敌,然后我们在读入的时候判断后两种情况,第一种另外判断。 代码: #include

算法刷题:最大异或对(Trie树扩展)、食物链(并查集扩展)

目录 引言一、最大异或对(Trie树扩展)1.题目描述2.解题思路3.代码实现4.测试 二、食物链(并查集扩展)1.题目描述2.解题思路3.代码实现4.测试 引言 这两个扩展题能够让我们更加的熟悉Trie树和并查集的使用,这两道题可以说是比较难的了,所以说还是好好对待吧。 一、最大异或对(Trie树扩展) 1.题目描述 在给定的 N 个整数 A1,A2……AN 中选出两个

Codevs 1074 食物链 2001年NOI全国竞赛

1074 食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。    现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。    有人用两

Acwing算法基础篇(二) 食物链

动物王国中有三类动物 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。此人对 N 个动物,用上述两种说法,

POJ1182 食物链

Description 动物王国中有三类动物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。 此人对N个动物,用上述两种说法,一句接一

Java实现 洛谷 P2024 [NOI2001]食物链

输入输出样例 输入 #1 100 71 101 12 1 22 2 32 3 31 1 32 3 11 5 5 输出 #1 3 import java.util.Scanner;public class Main {static int x[],sum=0;public static void main(String[] args) {Scanner sc=ne