Luogu P2024 [NOI2001]食物链
并查集
首先先要读懂题目,a是b的食物的话,b的天敌是a,b的食物是a的天敌
比如,人吃鸡,鸡吃草,那么草吃人。。。。。
所以建3个并查集,+n时表示这是其食物,+2*n时表示这是其天敌
所以当x,y是同类当且仅当x的食物不是y,且x的天敌不是y
当x吃y当且仅当x和y不是同类,y的食物不是x
然后并查集维护即可
#include <bits/stdc++.h>
using namespace std;
const int MAXN=51000;
int n,k,fa[MAXN*4],ans;//1 same 2 food 3 enemy
inline int find(int x)
{
if (fa[x]==x)
return fa[x];
fa[x]=find(fa[x]);
return fa[x];
}
void unite(int x,int y)
{
int fx,fy;
fx=find(x);
fy=find(y);
fa[fx]=fy;
}
int main()
{
scanf("%d%d",&n,&k);
for (int i=1;i<=3*n+10;i++)
fa[i]=i;
for (int i=1;i<=k;i++)
{
int d,x,y;
scanf("%d%d%d",&d,&x,&y);
if (x>n ||y>n)
{
ans++;
continue;
}
if (d==1)
{
if (find(x+n)==find(y) || find(x+n*2)==find(y))
{
ans++;
continue;
}
unite(x,y);
unite(x+n,y+n);
unite(x+2*n,y+2*n);//三个并查集的同类都要连起来
}
else
{
if (x==y || find(x)==find(y) || find(x+2*n)==find(y))
{
ans++;
continue;
}
unite(x+n,y);
unite(x+2*n,y+n);
unite(x,y+2*n);//三个并查集维护
}
}
printf("%d\n",ans);
}
Luogu P2024 [NOI2001]食物链的更多相关文章
- Luogu P2024 [NOI2001]食物链 | 并查集
题目链接 思路:并查集,因为一开始我们并不知道每一只动物是哪一个种类的,所以我们干脆建立三倍于n的空间,1~n这三分之一用来存第i只动物是A的情况,n+1~2n这三分之一用来存第(i-n)只动物是B的 ...
- 洛谷 P2024 [NOI2001]食物链 解题报告
P2024 [NOI2001]食物链 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个 ...
- 【题解】P2024 [NOI2001]食物链 - 数据结构 - 并查集
P2024 [NOI2001]食物链 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 动物王国中有三类动物 \(A,B ...
- 洛谷 P2024 [NOI2001]食物链 (并查集)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P2024 这道题和团伙这道题的思想比较类似,都是一个数组分成几个集合,但这道题的思路更加混乱,建议没做 ...
- P2024 [NOI2001]食物链(种类并查集)
题目链接: https://www.luogu.org/problemnew/show/P2024 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 ...
- 种族并查集模板题分析 -----P2024 [NOI2001]食物链
本文参考了:洛谷p2024题解 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都 ...
- 洛谷 P2024 [NOI2001]食物链——带权值的并查集维护
先上一波题目 https://www.luogu.org/problem/P2024 通过这道题复习了一波并查集,学习了一波带权值操作 首先我们观察到 所有的环都是以A->B->C-> ...
- P2024 [NOI2001]食物链 并查集
题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ...
- 洛谷 P2024 [NOI2001]食物链
题意简述 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: 1."1 X Y",表示 X 和 Y 是同类. 2."2 X Y",表示 X 吃 Y . ...
随机推荐
- Burp时间到期之复活
Burp昨天到期了,找了好久终于找到可以用的了,分享给大家. https://pan.baidu.com/s/1hsEhUYS r6ls PS:https://github.com/mxcxvn/Bu ...
- SDK测试操作文档
准备所需材料 先把下列所需压缩包和文件传到虚拟机中. crypto-config压缩包存放order和peer节点所需要的证书文件(需要的是申请联盟链中的order和peer的证书文件) m2压缩包是 ...
- springcloud学习入门
Springcloud入门学习笔记 1. 项目初始化配置 1. 1. 新建maven工程 使用idea创建maven项目 1. 2. 在parent项目pom中导入以下依赖 <parent> ...
- rm -rf /*真的能删掉所有文件吗?
大佬们对于小白问的问题经常直接就是一个rm -rf /*丢过去(逃,被丢了很多次,所以印象深刻),但玩了这么久的梗,当我真正想删库的时候,这条命令却然并卵(滑稽,删库跑路都跑不成). 查看了下文件属性 ...
- ansible-命令使用说明
1. ansible命令的使用说明 ansible 主机或组-m 模块名-a '模块参数' ansible参数 表示调用什么模块,使用模块的那些参数 • 主机和组,是在/etc/ansible/hos ...
- C#数据结构-栈
栈的定义不需要多说,相信大家都非常熟悉,但是,在实际应用中栈的应用我们很少想到会去用栈结构,先上代码看下用法: Stack st = new Stack(); st.Push('A'); st.Pus ...
- 多测师讲解html _段落标签002_高级讲师肖sir
<html> <head> <meta charset="UTF-8"> <title>段落标签</title> < ...
- day02 Pyhton学习
1.昨日内容回顾 1.python是一门解释型,弱类型的高级编程语言 优点: 1.优雅简单明确 2.短小快,代码短,代码量小,开发效率高 缺点: 1.运行效率低(相对) 2.python解释器 Cpy ...
- day33 Pyhton 常用模块03
一.正则表达式: 1.元字符 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线 \s 匹配任意的空白符 \d 匹配数字 \n 匹配一个换行符 \t 匹配一个制表符 \b 匹配一个单词的结尾 ...
- ASP.NET Core 3.1 Razor 视图预编译、动态编译
1.安装NuGet包 Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 2.Startup.cs 配置 public ...