#include #include #include #include using namespace std;int n,m;int bin[50001];int findx(int x){ int r=x; while(r!=bin[r]) r=bin[r]; int j=x,k; while(...
分类:
其他好文 时间:
2014-06-15 00:17:10
阅读次数:
323
题目:
链接:点击打开链接
题意:
思路:
题目大意:Hopper教授正在研究一种稀有虫子的交配行为。他假设它们有两种性别并且它们只与异性交配。在他的实验中,很容易识别虫子和它们的交配行为,因为虫子背后印有编号。
问题
给定一组虫子的交配行为,确定实验是支持教授的假设即虫子没有同性恋,还是有部分交配行为不符合假设。
这道题实际上还是并查集,和以往不同的是。以往给...
分类:
其他好文 时间:
2014-06-13 21:29:50
阅读次数:
414
原先就看过这道题,觉得很复杂。不知道为什么今天一看觉得好水啊……难道这就是并查集的启发式合并?数组d【i】表示i到其父节点的距离,即中间隔了多少船舰。数组sum【i】记录以i为根的集合总共有多少个元素,将新节点插入的时候距离设为sum【i】就好了。代码:
1 var fa,d,sum:array[....
分类:
其他好文 时间:
2014-06-12 09:45:29
阅读次数:
145
在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通.....
分类:
其他好文 时间:
2014-06-10 16:20:58
阅读次数:
305
题目:
链接:点击打开链接
思路:
对边排序,再枚举每条边,如果出现通路(findset(x) == findset(y))就结束。
代码:
#include
#include
#include
#include
using namespace std;
#define MAXN 220
#define MAXM 1010
#define MAX ...
分类:
其他好文 时间:
2014-06-10 07:34:46
阅读次数:
237
并查集经典题,但是太坑了,数据只有一组,用EOF读入无限WA,我就这么对着正确的代码查了半个多小时,次奥。把一个结点拆成3个结点分别代表属于A,B,C三类,对于X,Y同类,有如果XA->YA,XB->YB,XC->YC
所以直接把两两并起来,当然要判断能不能并对于X吃Y ,有 XA->YB ,XB-...
分类:
其他好文 时间:
2014-06-09 15:49:48
阅读次数:
212
/*思路:类似图论中“一笔画”问题,两根木棒的相连接的端点是一样的颜色,(a,b)--(b,c)--(c, d)....方法:trie树+并查集,
利用trie树建立字符串和某一个节点的映射,并将这些和字符串构成映射的节点建成图, 用并查集判断图的连通*/ 1 #include 2 #includ....
分类:
其他好文 时间:
2014-06-08 21:46:18
阅读次数:
330
这题一看就应该知道是二分图匹配……我记得有个类似的题有一个并查集的解法,但是我找不到了…… 1 var
i,n,m:longint; 2 p:array[0..1500] of longint; 3 v:array[0..1500] of boolean; 4
a:array...
分类:
其他好文 时间:
2014-06-08 21:35:20
阅读次数:
297
题目意思:有n个村庄,编号1-n,以矩阵的形式给出任意两个村庄之间的距离,然后告诉已经有q个村庄已经修好了路,问现在要打算使所有村庄都联通需要修路的最小长度。
思路就是构造一棵最小生成树,所以将距离排序,从小到大依次并入,直到集合数为1为止。...
分类:
其他好文 时间:
2014-06-08 03:22:29
阅读次数:
289