做出的第一道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] 食物链的更多相关文章

  1. [vijos P1112] 小胖的奇偶

    第一次看到这题怎么也不会想到是并查集题目…星期五第一次看到这题,到今天做出来,实在是废了好多功夫.看了很多人的解题都有same和diff数组,我也写了,后来发现不对啊两个数组的话find函数怎么写呢? ...

  2. 关押罪犯 and 食物链(并查集)

    题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...

  3. 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募

    http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...

  4. NOI2001|POJ1182食物链[种类并查集 向量]

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 65430   Accepted: 19283 Description ...

  5. vijos P1915 解方程 加强版

    背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...

  6. vijos P1780 【NOIP2012】 开车旅行

    描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...

  7. 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险

    http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...

  8. 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流

    http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...

  9. tyvj1202 数数食物链

    描述 TsyD学习了生物的生态环境那一张后,老师留了一项作业,就是给一张食物网,求所有食物链的总数.(从最低营养级生物(它不能吃任何其他的生物)开始到最高营养级(它不能被任何其他生物吃) 叫做一条食物 ...

随机推荐

  1. Eclipse 设置文件的默认打开方式

    web开发中,我们在编辑JSP/xml的时候,会碰到一个非常郁闷的事,直接双击打开的JSP页面,当我们在编辑的时候会到处跳,这个我是深有体会,所以我们就用右击 open with,但是久而久之我们会感 ...

  2. SDL2.0的SDL_Event事件处理

    SDL_Event事件集合 SDL_AudioDeviceEvent SDL_ControllerAxisEvent SDL_ControllerButtonEvent SDL_ControllerD ...

  3. OpenGL的gluPerspective和gluLookAt的关系[转]

    函数原型void gluLookAt(GLdoble eyex, GLdouble eyey, GLdouble eyez,  GLdouble centerx, GLdouble centery, ...

  4. 转!!MYSQL数据类型

    这篇文章主要介绍了MySQL数据类型和常用字段属性总结,本文总结了日期和时间数据类型.数值数据类型.字符串数据类型等,需要的朋友可以参考下     前言 好比C++中,定义int类型需要多少字节,定义 ...

  5. Hbase之进行批处理操作

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...

  6. Linux绝技

    find ./ -name *.Annovar.hg19_multianno.vcf.gz |xargs -i cp {} ./bak/ find `pwd` -name "*.depth& ...

  7. 测序深度和覆盖度(Sequencing depth and coverage)

    总是跑数据,却对数据一无所知,这说不过去吧. 看几篇文章吧 Sequencing depth and coverage: key considerations in genomic analyses( ...

  8. 浅谈AsyncState与AsyncDelegate使用的异同

    对于AsyncState来说,其MSDN的解释为:得到BeginInvoke方法的最后一个参数.而对于AsyncDelegate来说,其MSDN的解释为:得到异步调用的委托对象.也就是异步调用的委托源 ...

  9. Bootstrap标签

    Bootstrap是Twitter推出的一个用于前端开发的开源工具包.用外链加载的方式可以将Bootstrap链接进来 常用方式: <link rel="stylesheet" ...

  10. 20145218 《Java程序设计》第9周学习总结

    20145218 <Java程序设计>第9周学习总结 教材学习内容总结 16.1.1 JDBC简介 JDBC全名Java DataBase Connectivity,是java联机数据库的 ...