P2024 [NOI2001] 食物链(带权并查集)

news/2025/2/12 11:42:36/文章来源:https://www.cnblogs.com/gxjcnblogs/p/18706190


这道题要用带权并查集,感觉没听懂只能先把自己能懂得写了;
数组b[i]表示i与根节点的关系,//0 : 同类 1:吃 2:被吃#include
r1 == r2 && b[x] != b[y]说明x和y在同一集合,但他们与根节点的关系不是一样的,说明他们不是同类,是假话

#include<set>
#include<map>
#include<algorithm>
#include<vector>
#define int long long
const int N = 1e6;
using namespace std;
char* p1, * p2, buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int read()
{int x = 0, f = 1;char ch = nc();while (ch < 48 || ch>57){if (ch == '-')f = -1;ch = nc();}while (ch >= 48 && ch <= 57)x = x * 10 + ch - 48, ch = nc();return x * f;
}
int a[N], b[N],ans=0;
int find(int x) {if (a[x] == x)return x;int t = a[x];a[x] = find(a[x]);b[x] = (b[x] + b[t]) % 3;//压缩路径return a[x];
}
signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n, k;cin >> n >> k;for (int i = 1; i <= n; i++)a[i] = i;for (int i = 1; i <= k; i++) {int op, x, y;cin >> op >> x >> y;if (op == 2 && x == y)ans++;else if (x > n || y > n)ans++;else {int r1 = find(x);int r2 = find(y);if (op == 1) {if (r1 != r2) {a[r2] = r1;b[r2] = (3 - b[y] + b[x]) % 3;}else if (r1 == r2 && b[x] != b[y])ans++;}if (op == 2) {if (r1 != r2) {a[r2] = r1;b[r2] = (3 - b[y] + b[x] + 1) % 3;}else if (r1 == r2 && (b[y] - b[x] + 3) % 3 != 1)ans++;}}}cout << ans;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/881254.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025苹果春季发布会前瞻:新品迭出,Apple Intelligence国行版即将上线!

随着2025年的到来,苹果公司的春季发布会也渐行渐近。作为科技行业的领军企业,苹果每一次的新品发布都备受瞩目。本次春季发布会,苹果预计会带来一系列令人期待的新品,同时,国行Mac用户也将迎来一个重大更新——Apple Intelligence功能的上线。随着2025年的到来,苹果公司的…

Python3测试框架unittest搭配自动化测试报告工具HTMLTestRunner

最近接触到Python的测试框架unittest, 浅浅的学习了一下。 unittest和HTMLTestRunner搭配,可以完成自动化测试的功能并生成自动化测试报告。 一. 简介Python内置的unittest模块,用于编写和执行单元测试。 HTMLTestRunner 是一个用于生成自动化测试报告的工具,扩展了 unittes…

毕业设计目前进度

毕业设计进度:基于VoIP的音频音协算法设计与实现 1、学习了MATLAB的使用并动手实践界面认识 变量命名 运算和程序结构 矩阵操作 绘制二维三维图形等 绘制波形图(或数据曲线图)通过学习matlab的使用,为编写代码和运行并检测音频质量打下基础,同时也学会了建立坐标轴并绘制图…

使用LM Studio部署DeepSeek 1.5B模型

下载LM Studio: https://installers.lmstudio.ai/win32/x64/0.3.9-6/LM-Studio-0.3.9-6-x64.exe 安装LM Studio: 略 打开LM Studio 设置语言启用内置代理,用于下载模型,否则大概率在Model Search中看不到模型信息,无法下载模型模型下载,两种方式: 第一种,通过LM Studio…

React—05—脚手架

使用npm全局下载create-react-app, 建议node>16。npm install create-react-app -g; 然后创建项目即可。create-react-app 项目名称 但是现在create-react-app有问题,有些库依赖的react18但是这个脚手架创建的默认是react19,而官方还没解决这个问题,建议用vite创建一…

2.9 CW 练时记录

前言 新的类型, 跟考试放的差不多的策略就行了 后面就是找时间复习, 然后找一下状态就好了 \(\rm{F}\) 看到这是个 \(\rm{C}\) 题, 先做这个 思路给定 \(p_{i, c}\) 表示位置 \(i\) 是字符 \(c\) 的概率, 确定 \(\displaystyle\sum_{c = 1}^{t} p_{i, c} = 1\) 一个有效的信息被…

SMU2025寒假训练周报2

这周状态其实不太好,很多时候心急总是卡简单题,中档题也有些难a,希望尽快调整 一.个人训练赛2 1. Linova and Kingdom 题目链接:Problem - C - Codeforces 每加一个点总体贡献就可能发生变化,那我们就处理每个点的贡献,将他的深度减去他孩子的总个数就是贡献,最后排序取…

无需服务器个性化域名重定向到其他网站

1. 准备工作 1. 申请个人域名免费方式:从 ClouDNS.net上创建账号申请即可,右上角可以选择中文。如果实在不会操作,可以参考:教你免费注册一个ClouDNS永久域名(保姆级教程) ,还可以自行搜索或问大模型或留言。 付费方式:从 主流域名注册商注册,国外:namesilo 比较便宜,…

在GitHub上部署个人静态网站

在GitHub上部署个人静态网站 首先将网站设置文件上传到github的一个新建仓库,并公开仓库(会员可不用公开)找到settings(设置)-page(页面)选项并进入 选择分支(root)并save等待一段时间(5分钟左右),重新进入该仓库的pages 已经生成网址点击网址或者Visit site进入网站…

使用nvm管理node版本

1、下载安装 NVM:https://github.com/coreybutler/nvm-windows2、下载完成后,解压缩nvm-setup.zip文件到您想要安装 NVM 的目录,双击nvm-setup.exe进行安装 3、配置环境变量,将安装目录添加到path环境变量PS C:\Users> nvm -v 1.2.24、查看可用的 Node.js 版本: 5、选择…

Cursor从0到1:让每个人都会编程

Cursor 可谓是最近最火的 AI 代码类应用之一。它结合了传统编辑器的功能(如 VS Code 的体验)与 AI 驱动的智能编程能力,旨在提升开发效率和代码质量。一、关于Cursor 1.1 简介 Cursor 是一款基于人工智能(AI)的现代化代码编辑器,专为开发者设计。它结合了传统编辑器的功能…

销售就是推销自己

销售的本质是顾客用钱买满足自己需求的卖方提供的产品。销售员就承担着桥梁的角色。渠道那么多,销售人员那么多,顾客为什么要通过你来买? 优秀的销售人员(商人)有下面几个特点。 1.自信 如果你相信你会成功,成功便会发生;如果你相信你会失败,失败便会找上门。无论如何我…