1074 食物链

2001年NOI全国竞赛

 时间限制: 3 s
 空间限制: 64000 KB
 题目等级 : 钻石 Diamond

题解

题目描述 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个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。   

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

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

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

你的任务是根据给定的N(1<=N<=50,000)和K句话(0<=K<=100,000),输出假话的总数。

输入描述 Input Description

第一行是两个整数N和K,以一个空格分隔。   

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

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

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

输出描述 Output Description

只有一个整数,表示假话的数目。

样例输入 Sample Input

100 7

1 101 1

2 1 2

2 2 3

2 3 3

1 1 3

2 3 1

1 5 5

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

输入文件

对7句话的分析 100 7

1 101 1  假话

2 1 2    真话

2 2 3    真话

2 3 3    假话

1 1 3    假话

2 3 1    真话

1 5 5    真话

NOI 2001 食物链(eat)

思路:

  并查集;

  怎么做呢?

  有人说要用带权并查集

  然而我是蒟蒻我不会

  我们要开三倍的n的father数组

  i表示与i同类的集合

  i+n表示i可以吃的集合

  i+n+n表示i+n可以吃且可以吃i的集合

  然后每次判断是否是符合已有的真话

  不符合ans++

  符合就作为一条新的真话

来,上代码:

#include <cstdio>#define maxn 50001
#define maxm 100001using namespace std;class Finding {private:int n,m,f[maxn*3],if_z,ans;char Cget;inline void read_int(int &now_){now_=0,if_z=1,Cget=getchar();while(Cget>'9'||Cget<'0'){if(Cget=='-') if_z=-1;Cget=getchar();}while(Cget>='0'&&Cget<='9'){now_=now_*10+Cget-'0';Cget=getchar();}now_*=if_z;}public:Finding(){read_int(n),read_int(m);for(int i=1;i<=n*3;i++) f[i]=i;int type,x,y;for(int i=1;i<=m;i++){read_int(type),read_int(x),read_int(y);if(x>n||y>n){ans++;continue;}if(type==1){if(If_same(x,y+n)||If_same(x,y+n+n)){ans++;continue;}else{Merge(x,y);Merge(x+n,y+n);Merge(x+n+n,y+n+n);}}else{if(If_same(x,y)||If_same(x+n+n,y)){ans++;continue;}else{Merge(x+n,y);Merge(x+n+n,y+n);Merge(x,y+n+n);}}}printf("%d\n",ans);}int Find(int x){if(x==f[x]) return x;f[x]=Find(f[x]);return f[x];}bool If_same(int x,int y){if(Find(x)==Find(y)) return true;else return false;}void Merge(int x,int y){x=Find(x),y=Find(y);if(x!=y) f[x]=y;}
};
class Finding do_;int main()
{return 0;
}

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6296597.html

AC日记——食物链 codevs 1047相关推荐

  1. AC日记——中庸之道 codevs 2021

    2021 中庸之道  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Description 给定一个长度为N的序列,有Q次 ...

  2. AC日记——热浪 codevs 1557 (最短路模板题)

    1557 热浪  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Description 德克萨斯纯朴的民眾们这个夏天正在遭 ...

  3. AC日记——蓬莱山辉夜 codevs 2830

    2830 蓬莱山辉夜  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解  查看运行结果 题目描述 Description 在幻想乡中,蓬莱山辉夜是月球公主,居 ...

  4. codevs 1047邮票面值设计

    codevs 1047邮票面值设计 刚看这题的时候就感觉是搜索,但是分类又是动态规划,就往动态规划那里想,结果就以为是那种一个递推式就出来的一个动态规划,后来写代码交上去发现都是错了,才感觉这里面肯定 ...

  5. AC日记——约瑟夫问题 codevs 1282

    1282 约瑟夫问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解  查看运行结果 题目描述 Description 有编号从1到N的N个小朋友在玩 ...

  6. AC日记——丑数 codevs 1246

    1246 丑数 USACO  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Description 对于一给定的素数集合 ...

  7. AC日记——爱改名的小融 codevs 2967

    2967 爱改名的小融  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 白银 Silver 题解 题目描述 Description Wikioi上有个人叫小融,他喜欢改名. 他的 ...

  8. AC日记——传染病控制 洛谷 P1041

    传染病控制 思路: 题目想问的是: 有一棵树: 对于除1外每个深度可以剪掉一棵子树: 问最后剩下多少节点: 题目意思一简单,这个题立马就变水了: 搜索就能ac: 数据有为链的情况,按深度为层次搜索的话 ...

  9. AC日记——中位数 洛谷 P1168

    题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], -, A[2k - 1]的中位数.[color=red]即[/color] ...

最新文章

  1. 无广告的pdf阅读器_奥利给!免费无广告!功能超齐全!这样的良心国产软件,真的不多了!...
  2. [2020多校A层11.18] 三角田地(因式分解)
  3. 单调队列优化的背包问题
  4. Linux(debian7)操作基础(十三)之shell脚本同时执行多个应用程序
  5. 大数据下的精准营销,媒介们将何去何从
  6. 再谈正态分布或高斯函数
  7. 95-230-022-源码-WordCount走读-获取JobGraph
  8. c++突破网关屏蔽_通过API网关实现微服务管控-限流,熔断和降级
  9. PAT 乙级 1034. 有理数四则运算(20) Java版
  10. linux安装 web2py,TurnkeyLinux上用于Web2Py到MySQL的DAL连接字符串
  11. svn sync主从同步学习
  12. origin函数拟合
  13. Excel学习笔记3||逻辑函数AND、OR、NOT、XOR、IF、IFS和查找函数VLOOKUP
  14. 数字孪生典型应用案例
  15. 李清照(诗词介绍收藏)
  16. 2011 IT娱乐界回顾
  17. TF卡里删掉文件后内存没变大_不用第三方,手机自带软件也能清扫内存!教你4个正确清理技巧...
  18. java判断微信号、手机、名字的正则表达
  19. chatGPT能生成图片吗-chatGPT如何用
  20. 字符串前加 u、r、f 的含义

热门文章

  1. MySql 创建索引原则
  2. 取MySQL最后几行数据
  3. linux下signal()函数超详细介绍
  4. 设计模式:单例模式之懒汉式
  5. [转]Backup and restore history details
  6. Enterprise Library 2.0 -- Caching Application Block
  7. Mybatis3源码分析(05)-加载Configuration-加载MappedStatement
  8. 阿里巴巴分布式服务框架 Dubbo
  9. cocos2dx JS 层(Layer)的生命周期
  10. javascript 变量提前