[vijos P1531] 食物链
做出的第一道NOI题目?(噗,还是看题解才会的…按某篇解题说的,这题就比我年轻四岁…T T 做的第一道IOI题目是USACO上的Packing Rectangles...这题比我还老!)对我等弱渣来说难度蛮大的,做了好几次并查集题目了,统统都觉得好抽象啊…这一题的难点就是,你不能直接将所有的点分为1,2,3三组,你只知道关系。边带权值的并查集也是第一次听说,一个mod 3就搞定实在太神奇…
Father数组记录祖先,Relation数组记录和祖先的距离
Relation[i]=0 表示和祖先是同类,Relation[i]=1 表示被祖先吃,Relation[i]=2表示吃祖先。
网上对于这篇的解题非常多,开成3*n数组的解法有待我研究,同时搞不清这跟向量有什么关系…最终参考比较多的是这篇文章。http://www.cnblogs.com/FreeDestiny/archive/2011/10/28/2227398.html
但是我对路径压缩,和对于Relation数组在Find函数中的更新还不是太理解,= =让我再想想。
program vijos_p1531;
const maxn=;
var relation,father:array[..maxn] of longint;
n,k,i,j,ans,t,x,y,fx,fy:longint; function find(x:longint):longint;
var ff:longint;
begin
if father[x]=x then exit(x);
ff:=find(father[x]);
relation[x]:=(relation[x]+relation[father[x]]) mod ;
father[x]:=ff;
exit(ff);
end; begin
readln(n,k);
for i:= to n do
begin
father[i]:=i;
relation[i]:=;
end;
ans:=;
for i:= to k do
begin
readln(t,x,y);
if (x>n) or (y>n) then
begin
inc(ans);
continue;
end;
if t= then
begin
fx:=find(x);fy:=find(y);
if (fx=fy) and (relation[x]<>relation[y]) then
begin
inc(ans);
continue;
end;
if (fx<>fy) then
begin
father[fx]:=fy;
relation[fx]:=(relation[y]-relation[x]+) mod ;
end;
end;
if t= then
begin
fx:=find(x);fy:=find(y);
if (fx=fy) and ((relation[x]-relation[y]+)mod <>) then
begin
inc(ans);
continue;
end;
if (fx<>fy) then
begin
father[fx]:=fy;
relation[fx]:=(relation[y]-relation[x]+) mod ;
end;
end;
end;
writeln(ans);
end.
食物链
测试数据 #0: Accepted, time = 7 ms, mem = 1008 KiB, score = 10
测试数据 #1: Accepted, time = 7 ms, mem = 1008 KiB, score = 10
测试数据 #2: Accepted, time = 15 ms, mem = 1004 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 1008 KiB, score = 10
测试数据 #4: Accepted, time = 15 ms, mem = 1012 KiB, score = 10
测试数据 #5: Accepted, time = 15 ms, mem = 1008 KiB, score = 10
测试数据 #6: Accepted, time = 31 ms, mem = 1008 KiB, score = 10
测试数据 #7: Accepted, time = 62 ms, mem = 1008 KiB, score = 10
测试数据 #8: Accepted, time = 78 ms, mem = 1008 KiB, score = 10
测试数据 #9: Accepted, time = 62 ms, mem = 1008 KiB, score = 10
[vijos P1531] 食物链的更多相关文章
- [vijos P1112] 小胖的奇偶
第一次看到这题怎么也不会想到是并查集题目…星期五第一次看到这题,到今天做出来,实在是废了好多功夫.看了很多人的解题都有same和diff数组,我也写了,后来发现不对啊两个数组的话find函数怎么写呢? ...
- 关押罪犯 and 食物链(并查集)
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...
- 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...
- NOI2001|POJ1182食物链[种类并查集 向量]
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65430 Accepted: 19283 Description ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
- vijos P1780 【NOIP2012】 开车旅行
描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...
- 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...
- 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...
- tyvj1202 数数食物链
描述 TsyD学习了生物的生态环境那一张后,老师留了一项作业,就是给一张食物网,求所有食物链的总数.(从最低营养级生物(它不能吃任何其他的生物)开始到最高营养级(它不能被任何其他生物吃) 叫做一条食物 ...
随机推荐
- Eclipse 设置文件的默认打开方式
web开发中,我们在编辑JSP/xml的时候,会碰到一个非常郁闷的事,直接双击打开的JSP页面,当我们在编辑的时候会到处跳,这个我是深有体会,所以我们就用右击 open with,但是久而久之我们会感 ...
- SDL2.0的SDL_Event事件处理
SDL_Event事件集合 SDL_AudioDeviceEvent SDL_ControllerAxisEvent SDL_ControllerButtonEvent SDL_ControllerD ...
- OpenGL的gluPerspective和gluLookAt的关系[转]
函数原型void gluLookAt(GLdoble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, ...
- 转!!MYSQL数据类型
这篇文章主要介绍了MySQL数据类型和常用字段属性总结,本文总结了日期和时间数据类型.数值数据类型.字符串数据类型等,需要的朋友可以参考下 前言 好比C++中,定义int类型需要多少字节,定义 ...
- Hbase之进行批处理操作
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...
- Linux绝技
find ./ -name *.Annovar.hg19_multianno.vcf.gz |xargs -i cp {} ./bak/ find `pwd` -name "*.depth& ...
- 测序深度和覆盖度(Sequencing depth and coverage)
总是跑数据,却对数据一无所知,这说不过去吧. 看几篇文章吧 Sequencing depth and coverage: key considerations in genomic analyses( ...
- 浅谈AsyncState与AsyncDelegate使用的异同
对于AsyncState来说,其MSDN的解释为:得到BeginInvoke方法的最后一个参数.而对于AsyncDelegate来说,其MSDN的解释为:得到异步调用的委托对象.也就是异步调用的委托源 ...
- Bootstrap标签
Bootstrap是Twitter推出的一个用于前端开发的开源工具包.用外链加载的方式可以将Bootstrap链接进来 常用方式: <link rel="stylesheet" ...
- 20145218 《Java程序设计》第9周学习总结
20145218 <Java程序设计>第9周学习总结 教材学习内容总结 16.1.1 JDBC简介 JDBC全名Java DataBase Connectivity,是java联机数据库的 ...