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

P2024 [NOI2001] 食物链 - 洛谷

题目:P2024 [NOI2001] 食物链 - 洛谷

思路:

  1. 假设一条链状结构均是吃与被吃的关系 x <- p1<- p2<- p3等
    由于C->B->A->C,在链上,与x距离0为同类,1为x吃其,2为x被其吃
  2. 用并查集来存储所有节点,无论节点与其父亲节点是何种关系
  3. 用一个权值d[x]表示 x 到父亲节点的距离(关系):0(同类)、1(x吃其父亲节点)、2(x被其父亲节点吃)
    在路径压缩的过程中一步一部累加x到根节点的距离,最后x连接到根,d[x]即可表示与其根的关系
  4. x与y同一根时,(d[x]-d[y]+3)%3表示 x 与 y 的关系:0(同类)、1(x吃y)、2(x被y吃)
  5. x与y不同根,则需要合并,将x的根的父亲设置为y的根
    同类合并:(d[x]+d[fx] -d[y]+3)%3==0 ,即d[fx]=(d[y]-d[x]+3)%3
    x吃y:(d[x]+d[fx] -d[y]+3)%3==1 ,即d[fx]=(d[y]-d[x]+1+3)%3

代码:

#include<iostream>
using namespace std;const int N=50010;
int p[N],d[N];
//d[i]可取 0 1 2,分别代表与其父节点的关系是 同类,吃其父节点,被其父节点吃 
int find(int x)
{if(p[x]!=x){//如果x的父亲不是根,则进入,进行路径压缩,同时将d[x]更新为与根的关系int u=find(p[x]);//求p[x]的根并记录,实现路径压缩后d[p[x]]即为p[x]与根的关系d[x]=(d[x]+d[p[x]])%3;//x与根的关系=(x与父节点的关系+父节点与根的关系)%3p[x]=u;}return p[x];
}int main()
{int n,k,res=0;scanf("%d%d",&n,&k);for(int i=0;i<=n;i++)p[i]=i;while(k--){int op,x,y;scanf("%d%d%d",&op,&x,&y);int fx=find(x),fy=find(y);if(x>n||y>n)res++;else if(op==1){if(fx==fy&&(d[x]-d[y]+3)%3!=0)res++;//根相同,且非同类,违背真话else{p[fx]=fy;d[fx]=(d[y]-d[x]+3)%3;}}else{if(x==y||(fx==fy&&((d[x]-d[y]+3)%3==0||(d[x]-d[y]+3)%3==2)))res++;//1.x等于y,2.根相同,且关系已经明了不是x吃y,违背真话else{p[fx]=fy;d[fx]=(d[y]-d[x]+1+3)%3;}}}cout<<res;return 0;
}
http://www.jsqmd.com/news/322645/

相关文章:

  • 2026如何备考执药各科目——科学四阶段体系引领高效通关
  • Compose: Android整合Yolo26e模型
  • [1]
  • 2026十大主治医师医考机构推荐指数排名
  • 2026如何备考执药各科目——执业药师考试全科目备考策略指南
  • Lua调C#:反射可行但坑多,慎入
  • 2026年多分量测力平台厂家权威推荐榜:三分量测力平台优质制造商+实力供应商全解析
  • 2026医考备考指南:盘点市面10大机构,谁才是你的“上岸”助手?
  • 亚远景-ISO/PAS 8800与全球汽车AI监管趋同下的中国企业合规策略与技术适配
  • 2026备考执业药师听哪个老师的课:口碑与实力兼具的讲师推荐清单
  • 如何备考2026主管药师,过考考生分享高分备考经验与方法
  • 完整教程:AWS专家Greg Coquillo提出的 6种LLM ORCHESTRATION PATTERNS解析
  • 2026主治医师考试机构推荐测评,探寻金牌备考良方
  • 2026备考执业药师听哪个老师的课?讲师测评对比,这份口碑排行够靠谱!
  • 实用指南:详解Linux进程间通信(IPC):管道、共享内存与信号量的原理与实战
  • 2026年无人机采购去哪个网站?行业口碑平台与选购技巧分享
  • 深度解析主管药师考试预测卷买哪个:多维评测优选金榜
  • 探究主管药师考试预测卷买哪个:构建知识体系的通关蓝图
  • 2026深圳眼镜店精准场景排行(分需求版)—— 不同人群,精准选店不踩坑
  • 宁波财税公司首选推荐|宏德财税:十三载匠心,全域护航,行业标杆
  • 中西医执业老师哪个好?三位实战派讲师特色解析与选师指南
  • 球幕投影融合,让画面无缝衔接的技术
  • 文件信息修改器 v1.0一款非常简单且实用的文件信息修改软件
  • 老年人能力评估系统Day6
  • 智慧工地综合智能管理系统
  • 文件分拣工具一款文件批量按文件名大小日期后缀关键词格式分类软件
  • 初次玩maincraft
  • 吊打面试官!全网最全多租户系统设计方案
  • 文件名管理器 v2.5快速、准确地处理文件名添加或删除特定字符转换
  • 多租户架构:根治企业多团队数据混乱的“外科手术刀”