随笔分类 -  并查集

poj-1733 Parity game ****
摘要:1 /* 2 * poj-1733 Parity game.cpp 3 * 4 * Created on: 2012-2-17 5 * Author: LongDou 6 * 7 * 8 * hash离散化 + 并查集 9 * 10 * 设s[0]=0,s[i]=a[1]+a[2]+...+a[i],则信息i j even等价于a[i]+...+a[j]为偶数,即 11 s[j]-s[i-1]为偶数,即s[j]与s[i-1]同奇偶。这样,每条信息都可以变为 12 s[i-1]和s[j]是否同... 阅读全文

posted @ 2012-02-17 17:12 龙豆 阅读(586) 评论(1) 推荐(1) 编辑

poj-1988 Cube Stacking **
摘要:1 /* 2 * poj-1988 Cube Stacking.cpp 3 * 4 * Created on: 2012-2-12 5 * Author: LongDou 6 * 7 * 并查集: 8 * 每个节点有3个域:1、fa[x]:并查集中x的父节点 (fa[x]必压在x之下,但不一定直接相邻) 9 * 2、rank[x]:在x之下(不包括x)且在fa[x]之上(包括fa[x])的方块数10 * (如果直接记录x之下的总方块数,则每次合并都需更... 阅读全文

posted @ 2012-02-12 16:52 龙豆 阅读(331) 评论(0) 推荐(0) 编辑

poj-1182 食物链 **
摘要:1 // poj1182.cpp 2 // 与 poj-1703 Find them, Catch them 思想类似, 只是多了一种状态,rank取值为0、1、2: 3 // 0 : x 与 fa[x] 同类 4 // 1 : x 被 fa[x] 吃 5 // 2 : x 吃 fa[x] 6 7 #include "stdafx.h" 8 #include <cstdio> 9 using namespace std;10 11 const int maxn = 50000 + 10;12 const int maxk = 100000 + 10;13 14 阅读全文

posted @ 2012-02-12 15:26 龙豆 阅读(241) 评论(0) 推荐(0) 编辑

poj-2492 A Bug's Life **
摘要:与POJ-1703类似。。故先转一个和1703相同解法的代码:————————————————————【转】这道题和poj1182是很类似的,只不过拿那道题目有三个集合,而我们这道只有两个,岂不是更简单!具体做法要在熟悉了并查集这种数据结构的常规操作之后进行扩展。关于并查集请参考《算法导论》,这是一本非常非常出色的算法类参考书,他所讲的不相交集合就是并查集。注意两个概念:按秩合并、路径压缩。1、按秩合并由于并查集一般是用比较高效的树形结构来表示的,按秩合并的目的就是防止产生退化的树(也就是类似链表的树),用一个数组记录各个元素的高度(也有的记录各个元素的孩子的数目,具体看哪种能给解题带来方便) 阅读全文

posted @ 2011-09-02 13:37 龙豆 阅读(743) 评论(0) 推荐(0) 编辑

poj-1703 Find them, Catch them ***
摘要:【转】解析:并查集的题目,并查集的拓展。一般的思路是先初始化,各个数自成一个组,然后是两个gangs自成一个组,但由于两个给定元素有三种关系:Inthe same gang; Indifferent gangs; Notsure yet;采用此模型的缺点是判断两个元素关系还未确定这种情况比较复杂,故模型需要改进。本题的正确模型是将已经确定关系的元素组成一个集合,然后利用两个元素的father是同一个来确定这两个元素之间的关系。father[a]中存放的是a的根结点,rank中存放的是father[a]与a的关系,0表示两者不在同一个gangs中,1表示两者在同一个gangs中。具体的程序还是沿 阅读全文

posted @ 2011-09-02 13:25 龙豆 阅读(2355) 评论(0) 推荐(1) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示