[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学习了生物的生态环境那一张后,老师留了一项作业,就是给一张食物网,求所有食物链的总数.(从最低营养级生物(它不能吃任何其他的生物)开始到最高营养级(它不能被任何其他生物吃) 叫做一条食物 ...
随机推荐
- 项目开发中遇到的extjs常见问题
事件触发机制 l 给某一个控件添加事件. obj.addEvents( {search : true }); l 给某一个事件添加处理函数 n 给一个对象或变量添加监听及对应得处理,可以在创建时,通过 ...
- ECMAScript 6入门 - let和const命令
详细学习链接: http://es6.ruanyifeng.com/#docs/let let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命 ...
- IE浏览器打印合格证相关问题
0.打印机驱动,打印参数设置,首选项配置,数值都必须精确. 1.google浏览器死都不兼容,上下行之间会重叠. 解决方案:必须IE 2.IE 10,IE 11 需要开兼容性视图设置,添加该网站.不然 ...
- 快速开始使用Graph-tool - gt文件格式
gt文件格式 gt文件格式是一种简单的二进制格式,用来存储graph-tool的图实例,以一个紧凑和快速的方式,包括了库支持所有类型的属性映射. 它是graphml格式(基于文本)的另一种选择,gra ...
- 垂直的seekbar
看下效果: 1 package org.qianyukun.core.views; import android.content.Context; import android.graphics.Ca ...
- VI经典插件ctags
Vi经典插件ctags(转) (为了提高工作效率,必须学会使用一些工具) . 查看 key 相关信息说明的命令 :help keycodes ============================= ...
- webpack安装配置使用教程详解
webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对 ...
- Spring表达式语言 之 5.1 概述 5.2 SpEL基础(拾叁)
5.1 概述 5.1.1 概述 Spring表达式语言全称为"Spring Expression Language",缩写为"SpEL",类似于Struts ...
- 写在学习Java GUI之前
Java GUI就是用Java语言开发桌面应用,而Java又有三个Java GUI库,分别为AWT,Swing和SWT/JFace. 现在要学的是Swing库. 后记:开发桌面应用,不止一种技术,现在 ...
- WinForm应用程序之注册模块的设计与实现
Posted on 2012-11-13 10:21 星星之火116 阅读(3260) 评论(4) 编辑 收藏 我们在安装一些桌面应用程序的时候,往往在会有提示当前用户使用的是试用版,要进行注册.刚好 ...