食物链

(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 是同类。

第二种说法是“ 2 X Y” , 表示 X 吃 Y。

此人对 N 个动物, 用上述两种说法, 一句接一句地说出 K 句话, 这 K 句话有的是真

的, 有的是假的。 当一句话满足下列三条之一时, 这句话就是假话, 否则就是真话。

1) 当前的话与前面的某些真的话冲突, 就是假话;

2) 当前的话中 X 或 Y 比 N 大, 就是假话;

3) 当前的话表示 X 吃 X, 就是假话。

你的任务是根据给定的 N 和 K 句话, 输出假话的总数。

【 输入格式】

第一行两个整数 N 和 K。

以下 K 行每行三个正整数 D, X, Y, 以空格隔开, 其中 D 表示说法的种类。

若 D=1, 则表示 X 和 Y 是同类。

若 D=2, 则表示 X 吃 Y。

【 输出格式】

一个整数, 表示假话数。

【 样例输入】

100 7

1 101 1

2 1 2

2 2 3

2 3 3

1 1 3

2 3 1

1 5 5

【 样例输出】

3

【 数据范围】

七句话分别是: 假、 真、 真、 假、 假、 真、 真。

对于 100%的数据 1<=N<=50000, 0<=K<=100000。

——————————————————————————————————————

这道题的标算是并查集。

但是我们要怎么并查集呢?

这里需要一个很巧妙的技巧,那就是开一个三倍的并查集数组(或者是三个)。

第一个存储i的同类,第二个存储i吃的,第三个存储吃i的。

如果读入的x,y是同类,那么x的同类也就是y的同类(此处进行合并集合操作),x吃的y也吃,吃x的也吃y。

那么x吃y也是一样了。

code

for(int i=;i<=k;i++)
{
int c=read(),x=read(),y=read();
if(x>n || y>n)
{
ans++;
continue;
}
if(c==)
{
if(getf(x+n)==getf(y) || getf(x+n*)==getf(y))
{
ans++;
continue;
}
fa[getf(y)]=getf(x);
fa[getf(y+n)]=getf(x+n);
fa[getf(y+n*)]=getf(x+n*);
}
else
{
if(getf(x)==getf(y) || getf(x+n*)==getf(y))
{
ans++;
continue;
}
fa[getf(y)]=getf(x+n);
fa[getf(y+n)]=getf(x+n*);
fa[getf(y+n*)]=getf(x);
}
}

食物链_KEY的更多相关文章

  1. 关押罪犯 and 食物链(并查集)

    题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...

  2. NOI2001|POJ1182食物链[种类并查集 向量]

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 65430   Accepted: 19283 Description ...

  3. tyvj1202 数数食物链

    描述 TsyD学习了生物的生态环境那一张后,老师留了一项作业,就是给一张食物网,求所有食物链的总数.(从最低营养级生物(它不能吃任何其他的生物)开始到最高营养级(它不能被任何其他生物吃) 叫做一条食物 ...

  4. vijos1531 食物链

    背景 安徽省芜湖市第二十七中学测试题 NOI 2001 食物链(eat) Description:OfficialData:OfficialProgram:JackDavid127 描述 动物王国中有 ...

  5. poj1182食物链_并查集_挑战程序设计竞赛例题

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 65534   Accepted: 19321 Description ...

  6. BZOJ4562: [Haoi2016]食物链

    Description 如图所示为某生态系统的食物网示意图,据图回答第1小题 现在给你n个物种和m条能量流动关系,求其中的食物链条数. 物种的名称为从1到n编号 M条能量流动关系形如 a1 b1 a2 ...

  7. [poj1182]食物链(并查集+补集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64841   Accepted: 19077 Description ...

  8. [并查集] POJ 1182 食物链

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 66294   Accepted: 19539 Description ...

  9. 【BZOJ-4562】食物链 记忆化搜索(拓扑序 + DP)

    4562: [Haoi2016]食物链 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 133  Solved: 112[Submit][Status] ...

随机推荐

  1. 读书笔记之JavaScript中的数据类型

    JavaScript严格意义上分为ECMAScript.DOM.BOM.ECMAScript是一门真正意义上的语言,独立于浏览器,浏览器只是它的一个宿主环境.DOM(文档对象模型),为ECMAScri ...

  2. SOJ1029 Humble Numbers (枚举)

    A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...

  3. 针对Restful风格参数传递的请求获取真实url

    昨天遇到这样一个问题,先简单介绍下. 业务场景 我们想要统计热点请求URL,进而进行分析优化 方案 通过过滤器获取到请求url(调用方法request.getservletpath),通过redis进 ...

  4. PHP 生成全局唯一id

    直接上代码: function generate_global_uniqid() { $prefix = md5(microtime(true)); // 生成唯一ID发生器 prefix,如果为服务 ...

  5. ZOJ Monthly, January 2019 Little Sub and Isomorphism Sequences 【离线离散化 + set + multiset】

    传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5868 Little Sub and Isomorphism Seque ...

  6. 2018年暑假ACM个人训练题6 解题报告

    A:水题 https://www.cnblogs.com/yinbiao/p/9311834.html B:考察进制的转化 https://www.cnblogs.com/yinbiao/p/9311 ...

  7. Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法

    Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法 从xcode4.4开始,LLVM4.0编译器为Objective-C添加一些新的特性. ...

  8. ARM 汇编指令集 特点之一:指令后缀

    1.同一 指令 添加不同的后缀 就会有不同的功能! 例子: B (Byte)  功能不变,操作长度变为8位 H (Half Word) 功能不变,操作长度变为16位 S(Signed) 功能不变,操作 ...

  9. 关于ucos操作系统中如何从邮箱中提取出消息

    问题提出? 定义两个任务,task1,task2,想task1用OSMboxPost,task2用OSMboxPend定义了一个邮箱Mbox1=OSMboxCreate(括号里面应该怎么写?)还有具体 ...

  10. mysql错误errno:121

    121错误是因为外键名重复.在同一个库中外键是不允许与其他外键重名的. 遇到这个错误请给你定义的外键换唯一无重复的名字. 同时查阅到外键也有可能导致150错误. Can't create table ...