当前位置: 首页 > news >正文

P2024 [NOI2001] 食物链

*原题链接*

2024年当然要做P2024啦,看了眼题目,还是原来做过的题。这道题可以用种类并查集或带权并查集来做,而我只学会了种类并查集一种做法。分析题目中给出的关系,可以想到应该分3类集合,有同类集合,猎物集合,天敌集合,然后对于给出的每种关系判断是否冲突,再进行合并,就做完了。细节见代码。

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;int n,m,fa[N],ans;int find(int x){if(x!=fa[x]) fa[x]=find(fa[x]);return fa[x];
}int main(){ios::sync_with_stdio(false);cin>>n>>m;for(int i=1;i<=3*n;i++) fa[i]=i;//x表示x的同类集合,x+n是x的猎物集合,x+n+n是x的天敌集合for(int i=1;i<=m;i++){int x,y,opt;cin>>opt>>x>>y;if(x>n||y>n){ans++;continue;}if(opt==1){if(find(x+n)==find(y)||find(x+n+n)==find(y)){ans++;continue;}fa[find(x)]=find(y),fa[find(x+n)]=find(y+n),fa[find(x+n+n)]=find(y+n+n);//x和y同类,每类集合中分别合并}else{if(find(x)==find(y)||find(x+n+n)==find(y)){ans++;continue;}fa[find(x)]=find(y+n+n),fa[find(x+n)]=find(y),fa[find(x+n+n)]=find(y+n);//x吃y,则y属于x的猎物集合,x属于y的天敌集合,x的天敌集合属于y的猎物集合}}cout<<ans<<endl;return 0;
}


http://www.mrgr.cn/news/17744.html

相关文章:

  • Jenkins+docker+springboot 一键自动部署项目步骤
  • 网络编程核心函数
  • Linux系统练习笔记【完整版】
  • 一起学习LeetCode热题100道(66/100)
  • LIN总线CAPL函数—— 更新特定报文数据(linUpdateResponse)
  • GMeLLo:结合知识图谱的 LLM 多跳问答技术,效果显著提升
  • Java教程:入门基础【十万字详解】
  • [kylin M900]麒麟操作系统固件修改与合成
  • 【动态规划】子数组系列二(数组中连续的一段)
  • 解析淘宝商品详情API返回值中的特殊属性
  • 023、架构_资源_AZRG
  • 如何从 Mac 上清空的垃圾箱中恢复误删除的文件
  • c# fromlayout 布局中间空隙问题
  • opencv计算机视觉识别图像处理c++项目实战python网课程视频教程
  • 20240902软考架构-------软考101-105答案解析
  • C++深入理解AVL树的设计与实现:旋转操作详解
  • C++开发基础之宏定义:入门、中级、高级用法示例解析
  • OHIF Viewer 配置接口的地方
  • yolov8目标检测pyside6可视化图形界面+检测源码ui文件——用于计数统计
  • 交流负载箱的特点和优势有哪些?