食物链_KEY
食物链
(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的更多相关文章
- 关押罪犯 and 食物链(并查集)
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...
- NOI2001|POJ1182食物链[种类并查集 向量]
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65430 Accepted: 19283 Description ...
- tyvj1202 数数食物链
描述 TsyD学习了生物的生态环境那一张后,老师留了一项作业,就是给一张食物网,求所有食物链的总数.(从最低营养级生物(它不能吃任何其他的生物)开始到最高营养级(它不能被任何其他生物吃) 叫做一条食物 ...
- vijos1531 食物链
背景 安徽省芜湖市第二十七中学测试题 NOI 2001 食物链(eat) Description:OfficialData:OfficialProgram:JackDavid127 描述 动物王国中有 ...
- poj1182食物链_并查集_挑战程序设计竞赛例题
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65534 Accepted: 19321 Description ...
- BZOJ4562: [Haoi2016]食物链
Description 如图所示为某生态系统的食物网示意图,据图回答第1小题 现在给你n个物种和m条能量流动关系,求其中的食物链条数. 物种的名称为从1到n编号 M条能量流动关系形如 a1 b1 a2 ...
- [poj1182]食物链(并查集+补集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64841 Accepted: 19077 Description ...
- [并查集] POJ 1182 食物链
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 66294 Accepted: 19539 Description ...
- 【BZOJ-4562】食物链 记忆化搜索(拓扑序 + DP)
4562: [Haoi2016]食物链 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 133 Solved: 112[Submit][Status] ...
随机推荐
- Gradle入门实战(Windows版)
Installation Gradle runs on all major operating systems and requires only a Java JDK or JRE version ...
- BZOJ4827:[HNOI2017]礼物(FFT)
Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在 ...
- cascade rcnn
在region proposal阶段采用不同的iou. 第一幅图,不同颜色的线是用不同的region proposal的iou阈值,横坐标是region proposal生成的框与gt的原始iou,纵 ...
- DHCP, NAT
DHCP Dynamic Host Configuration Protocol(动态主机配置协议) (RFC 2131) Bootstrap Protocol BOOTP(引导程序协议) allow ...
- Linq不分组求多列的和
我们需要写Linq查询语句,使用let来创建一个新的变量 Let 关键字 “let”关键字在查询语法中很有用.它会投影一个新的范围变量,允许重新使用表达式并使查询更具可读性. 例如: 这里需要写,两遍 ...
- 浅析OC语言
学习一门开发语言,首先要掌握的它的基本语法,这可能几天就能学会,但如果要融会贯通,就得去学习这门语言的框架和一些库,再结合一些项目的应用,这可能需要花几年的时间. OC是C语言的一个超集,是一门面向对 ...
- HDU 2065 "红色病毒"问题(生成函数)
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- MySQL学习【第三篇用户管理】
一.用户管理 1.给mysql用户设密码以及删除用户 1.给mysql的root用户设置密码 [root@db02 scripts]# mysqladmin -uroot -p password '1 ...
- .Net core 使用SSH.Net上传到SFTP服务器和和下载文件
今天换了个服务器,文件上传到sftp服务器上了,那么ftp和sftp服务器有什么区别呢,正常来说sftp会更安全一些. 废话不多说,首先.net core 上传到sftp需要引入一个Nuget包,就是 ...
- vue的声明式渲染
声明式渲染 答:2018-8-23声明式渲染是vue对数据进行操作的模式,也叫做响应式渲染当dom节点上绑定了vue的对象的属性时,如果这个属性发生了改变,无需你进行其它的操作,页面上的数据会自动发生 ...