2011年10月17日
摘要: UVA_10158和杭电那个食物链是差不多的,并且还少了一种关系的表示。思路就是用并查集把相互产生关系的元素放到一起,并用一个数组delta[]来表示和根节点的关系,0表示friend,1表示enemy。在进行合并操作以及压缩路径的时候要注意把当前节点相对于父节点的关系用类似向量的运算转化成相对于根结点的关系。#include<stdio.h>#include<string.h>#define MAXN 10010int N, p[MAXN], delta[MAXN];int find(int x){ if(p[x] == x) return x; int tx = . 阅读全文
posted @ 2011-10-17 13:56 Staginner 阅读(372) 评论(0) 推荐(0) 编辑
摘要: UVA_10985L和R的间距能拉多远是取决于L与R之间的最短路,因此,水平悬挂的绳一定是L和R之间最短路的一个部分。而水平的Ring一定满足到L与R的距离和是L与R之间最短路的长度,因此我们可以先把所有水平的Ring找出来,符合要求的线一定是这些水平Ring之间的连线,但水平Ring之间的连线不一定符合要求(当两个Ring位于同一位置且恰好两者之间有一条连线,这条连线就不符合要求)。因此,思路就是先用Floyd做最短路,然后枚举L、R并计算符合要求的连线的数目即可。#include<stdio.h>#include<string.h>#define MAXD 150# 阅读全文
posted @ 2011-10-17 02:29 Staginner 阅读(403) 评论(0) 推荐(0) 编辑