NOI[2001]食物链
今天写了道并查集的题,看来并查集的题刷少了,,,,,用法好神奇啊!!!开三倍并查集
用i表示自己,i+n存天敌,i+2*n存可以克制de,再逻辑判断一下即可。
所以,要意识到并查集的分类处理可以开不同倍数的空间来适应题目要求。
1074 食物链
2001年NOI全国竞赛
动物王国中有三类动物 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(1<=N<=50,000)和K句话(0<=K<=100,000),输出假话的总数。
第一行是两个整数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
输入文件
对7句话的分析 100 7
1 101 1 假话
2 1 2 真话
2 2 3 真话
2 3 3 假话
1 1 3 假话
2 3 1 真话
1 5 5 真话
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#define fr(i,l,r) for(int i=l;i<=r;++i)//懒。。。。。。。
using namespace std;
int n,m,D,x,y,ans;
int f[200000];
int find(int a){if(f[a]!=a)f[a]=find(f[a]);return f[a];}
void make(int x1,int y1){if(find(x1)!=find(y1))f[find(x1)]=find(y1);}
int main(){scanf("%d%d",&n,&m);fr(i,1,3*n)f[i]=i;fr(i,1,m){scanf("%d%d%d",&D,&x,&y);if((x>n)||(y>n)||(x==y&&D==2)){ans++;continue;}if(D==1){if(find(x)==find(2*n+y)||find(n+x)==find(y)||find(x)==find(n+y)||find(2*n+x)==find(y)/*吃他的他吃的不能搞 */){ans++;continue;}make(x,y),make(x+n,y+n),make(x+2*n,y+2*n);}if(D==2){//x搞yif(find(y)==find(x)||find(y+n)==find(x)||find(y)==find(x+2*n)){ans++;continue;}make(x+2*n,y+n),make(x+n,y),make(x,y+2*n);}}printf("%d",ans);return 0;
}
转载于:https://www.cnblogs.com/zzmmm/p/6501182.html
NOI[2001]食物链相关推荐
- [题解]NOI 2001 食物链
发个题目链接吧 http://www.cqoi.net:2012/JudgeOnline/problem.php?id=1356 [题解] 在高一妹纸的推荐下看的这道题,发现NOI竟然有水题啊啊,果断 ...
- [ NOI 2001 ] 食物链
\(\\\) Description 有三类动物 \(A,B,C\),满足\(A\) 吃 \(B\),\(B\)吃 \(C\),\(C\) 吃 \(A\). 现有 \(N\) 个动物,以 \(1 - ...
- AC日记——食物链 codevs 1047
1074 食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 动物王国中有三类动物 A ...
- 【codevs1074】食物链
食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 动物王国中有三类动物 A, ...
- wikioi-天梯-提高一等-并查集-1074:食物链
题目描述 Description 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并 ...
- POJ 1703 Find them, Catch them(并查集高级应用)
POJ 1703 Find them, Catch them(并查集高级应用) 手动博客搬家:本文发表于20170805 21:25:49, 原地址https://blog.csdn.net/sunc ...
- NOI 题目 试题 目录 信奥 历年
NOI 题目 试题 目录 信奥 历年 NOI 2018 题目 试题 目录 信奥 历年 第一试 2018年7月18日 08:00-13:00 1.归程 return 2.冒泡排序 ...
- 1734: 炮兵阵地
1734: 炮兵阵地 [命题人 : #include <queue> #include <math.h> #include <stack> #include < ...
- 【NOIOL】【数论 / 数值】正反切函数的应用
题目描述 反正切函数可展开成无穷级数,有如下公式 (其中) 使用反正切函数计算是一种常用的方法.例如,最简单的计算的方法: 然而,这种方法的效率很低,但我们可以根据角度和的正切函数公式: 通过简单的变 ...
最新文章
- linux怎样创建硬链接,Linux下创建软、硬链接
- 开源代码ViewPageIndicator的使用
- stringbuilder删除最后一个字符_Java类-StingBuffer,StringBuilder
- maven使用出现的错误
- 乘风破浪的迁移学习!四字成语讲明白这个大热研究方向
- mysql双一参数_MySQL 的双1设置-数据安全的关键参数(案例分享)
- Hive报错:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
- MySQL-第十二篇管理结果集
- Excel 10个高级办公技巧
- 有哪些比较好的免费简历网站?
- 电脑基础知识入门:键盘上的英文,意思和功能汇总!
- 计算机视觉中的论文常见单词总结
- AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第4章:LISTS
- win10内存占用率过高怎么办_Win10系统硬盘占用率100%各种卡死怎么办?
- 成都拓嘉启远:造成拼多多异常订单的五种常见原因
- C++ 11 内容总结
- Linux vim分屏,如何切换窗口
- 首个Laravel工作流引擎发布 V1.0正式版
- ERP(用友)-账套管理
- 行人重识别(1)——行人检测综述
热门文章
- linux ssh 推送文件_WinSCP软件双系统(Win-Linux)文件传输教程
- Linux怎么调oracle存储,Linux 环境下Oracle安装与调试(四)之视图、存储过程
- 计算机网络的体系结构与协议基本概念,计算机网络技术基础-第3章网络体系结构与协议.ppt...
- 【ruoyi若依】echarts图表跑版
- uniapp开发微信小程序时,报错:Now you can provide attr `wx:key` for a `wx:for` to improve performance
- mongodb单机部署
- java hive 查询语句,使用java连接hive,并执行hive语句详解
- python程序结构有哪几种_Python数据结构与算法(几种排序)小结
- python无参数装饰器_python_之无参装饰器_01
- android应用资源可以分为两大类,Android 应用资源(一)