EOJ 3384 食物链
动物王国中有三类动物 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 句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话:
当前的话与前面的某些真的话冲突,就是假话;
当前的话中 X 或 Y 比 N 大,就是假话;
当前的话表示 X 吃 X,就是假话。
你的任务是根据给定的 N (1≤N≤50 000) 和 K 句话 (0≤K≤100 000),输出假话的总数。
以下代码来自https://blog.csdn.net/fwq990720/article/details/79108057
#include <iostream>
using namespace std; int father[], kind[]; int Find(int x)
{
if (x == father[x]) return father[x];
int y = Find(father[x]);
kind[x] = (kind[x] + kind[father[x]]) % ;
return father[x] = y;
} int Union(int op, int sp1, int sp2)
{
int x = Find(sp1), y = Find(sp2);
if (x == y){
if ((kind[sp1] - kind[sp2] + ) % == op - ) return ;
return ;
}
father[x] = y;
kind[x] = (-kind[sp1] + op - + kind[sp2] + ) % ;
return ;
} int main()
{
int n, k, op, sp1, sp2, cnt = , i;
cin >> n >> k;
for (i = ; i <= n; ++i){
father[i] = i;
kind[i] = ;
}
for (i = ;i < k; ++i){
cin >> op >> sp1 >> sp2;
if (op == && sp1 == sp2) ++cnt;
else if (sp1 > n || sp2 > n) ++cnt;
else cnt += Union(op, sp1, sp2);
}
cout << cnt << endl;
return ;
}
实在是太难了,找规律实在是难以找到。
经典的种类并查集,需要维护一个kind数组以记录和父节点的关系,并且在查找和合并时,要更新关系。


脑壳疼。
EOJ 3384 食物链的更多相关文章
- 关押罪犯 and 食物链(并查集)
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...
- NOI2001|POJ1182食物链[种类并查集 向量]
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65430 Accepted: 19283 Description ...
- tyvj1202 数数食物链
描述 TsyD学习了生物的生态环境那一张后,老师留了一项作业,就是给一张食物网,求所有食物链的总数.(从最低营养级生物(它不能吃任何其他的生物)开始到最高营养级(它不能被任何其他生物吃) 叫做一条食物 ...
- vijos1531 食物链
背景 安徽省芜湖市第二十七中学测试题 NOI 2001 食物链(eat) Description:OfficialData:OfficialProgram:JackDavid127 描述 动物王国中有 ...
- poj1182食物链_并查集_挑战程序设计竞赛例题
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65534 Accepted: 19321 Description ...
- BZOJ4562: [Haoi2016]食物链
Description 如图所示为某生态系统的食物网示意图,据图回答第1小题 现在给你n个物种和m条能量流动关系,求其中的食物链条数. 物种的名称为从1到n编号 M条能量流动关系形如 a1 b1 a2 ...
- [poj1182]食物链(并查集+补集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64841 Accepted: 19077 Description ...
- [并查集] POJ 1182 食物链
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 66294 Accepted: 19539 Description ...
- 【BZOJ-4562】食物链 记忆化搜索(拓扑序 + DP)
4562: [Haoi2016]食物链 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 133 Solved: 112[Submit][Status] ...
随机推荐
- JS高级——Object.prototype成员
基本概念 成员 描述 Object.prototype.__proto__ 指向当对象被实例化的时候,用作原型的对象. Object.prototype.hasOwnProperty() 返回一个布尔 ...
- cannot load oci dll,193-navicate连接oracle的解决方法
navicat连接远程数据库时 是因为instantclient是64位的,navicat是32位的,两者要一致 因为自己的navicat premium是破解版的,所以就另找了instantclie ...
- mvc 上传大文件
<configuration> <system.web> <httpRuntime maxRequestLength="204800" useFull ...
- Review:Microbiota, metagenome, microbiome傻傻分不清
Microbiota 微生物群 微生物群是指研究动植物体上共生或病理的微生物生态群体.微生物群包括细菌.古菌.原生动物.真菌和病毒.研究表明其在宿主的免疫.代谢和激素等方面非常重要.近义词Micr ...
- 怎么选择最适合自己的Linux培训机构?
Linux培训已经成为入门Linux的一个重要途径,它的优势在于学习知识的系统性.快速性和实用性.Linux培训毕业的学员大多数拥有较强的实战动手能力,能够较快上手,更符合企业需求. 不过,大部分同学 ...
- webpack核心概念使用的综合小案例
注: 由于版本更新很快,同样的配置不同版本很可能会出错(这个就很绝望了) 解决思路 看文档 查看源码接口 网上搜索相应错误 环境 webpack4.x + yarn 文件结构 . ├── dist / ...
- discuz 微社区开通
检测api: http://wsq.discuz.com/?a=apitest
- [POJ2104] 区间第k大数 [区间第k大数,可持久化线段树模板题]
可持久化线段树模板题. #include <iostream> #include <algorithm> #include <cstdio> #include &l ...
- BZOJ2730 矿场搭建 解题报告 点双联通分量
题意概述: 一张有向图,在其中设置一些关键点(即题目中的逃生出口),使得删除任意一个点之后其余点都可以到达至少一个关键点. 问至少需要设置多少中关键点,有多少种设置方法. 解析: 首先,这道题要求删掉 ...
- Spring MVC-处理程序映射(Handler Mapping)-Bean名称Url处理程序映射(Bean Name Url Handler Mapping)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_beannameurlhandlermapping.htm 说明:示例基于Spri ...