
并查集
Soar-
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
并查集基础知识
所谓并查集,就是集合,对集合的操作分为两种:并和查。 下面有两种实现。 第一种是不进行任何改善的。 第二种是进行改善的。#include<cstdio> #include<iostream> typedef int ElemntType; //采用数组存储方式,根的parent为-1. typedef struct { ElemntType Data; int parent;原创 2017-11-18 21:29:25 · 249 阅读 · 1 评论 -
L2-007. 家庭房产(并查集)
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家...原创 2018-03-29 20:47:22 · 242 阅读 · 0 评论 -
poj2236 Wireless Network(基础并查集)
题意:修复n台已经被损坏的电脑,两者距离小于d可以直接连接,否则只能通过其他电脑进行连接。两种操作,O x表示修复第x台电脑,S x y表示判断x y 间是否链接。题解: 并查集的基础应用:每次修复,将其加入能够加入的集合。每次判断是否连接,看是否在一个集合内就可以了。 #include<iostream> #include<cstdio> #include&l...原创 2018-02-19 16:56:14 · 198 阅读 · 0 评论 -
POJ---1456(Supermarket ,贪心,并查集优化,处理冲突)
题意:N个商品,每个在截止日期dx之前卖出,可以获得dp利润,问获得利润的最大值。题解: 将商品按照dp排序,然后依次将商品放在截止日期当天卖出,如果后来的与前面的发生冲突(两个商品截止日期相同),然后往前查找没有卖商品的日期,去卖后来的那个商品。 这个思想和哈希表线性处理冲突的方法类似,可以直接定义个布尔数组used【n】,每次扫描到没有卖物品的日期,然后卖掉冲突的商品。既然...原创 2018-02-18 15:36:36 · 251 阅读 · 0 评论 -
POJ 1733 Parity game(带权并查集)
题意:一个长度为n的0,1字符串,给出m行数据,每行数据给出区间[xi,yi]内的1的个数为奇数个或者偶数个。输出最小k,使得前k行数据不矛盾。题解: 带权并查集类型题:区间[xi,yi]内1的个数为偶数个,代表区间[1,xi-1],[1,yi]内含1的个数同奇偶,xi-1,yi种类相同反之异奇偶,种类不相同。 于是种类并查集!注意:给的 5000种语句,但是却有最大a为10亿,所以要离...原创 2018-02-19 16:44:11 · 221 阅读 · 0 评论 -
POJ---2912 Rochambeau(枚举+带权种类并查集)
题意:有n个人玩剪刀石头布,其中有一个人是裁判,剩下的人被分为三组,每组每次出的手型一样,裁判可以任意出,问是否能判断出哪个人为裁判。题解: 枚举每个人为裁判的情况,然后问题就转化为了种类并查集问题(食物链),判断离了这个人,数据是否存在矛盾,如果不矛盾,说明这个人为裁判。 #include<iostream> #include<cstdio> #includ...原创 2018-02-19 16:32:36 · 250 阅读 · 0 评论 -
HDU---3038(How Many AnswersAre Wrong,带权并查集)
HDU3038--- How Many AnswersAre Wrong 题意:A- B之间的和为S,其中0<A<=B<=N,给定一组数据中含有若干个A,B,S。问多少个是错误的。题解: 并查集的一类题型:食物链类~~~,带权并查集去做就行~~~。 #include<iostream> #include<cstdio> #include<...原创 2018-02-19 16:16:23 · 203 阅读 · 0 评论 -
HDU---1213(How Many Tables,并查集判连通分支数)
题意:判断连通分支数题解: 并查集#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<queue> #include<string> #include<cstring> #include&原创 2018-02-19 16:09:34 · 191 阅读 · 0 评论 -
POJ---1611(并查集,求规模,按规模归并)
题意:N个学生,m个团体,0号学生带传染病,每个集合内有一个带传染病的,则会感染该集合内所有的学生。题解:并查集基础题,归并函数写的时候要按照按规模归并。根节点root的parents【root】=-k记录集合的规模k。最后输出-pa【findset(0)】。 #include<iostream> #include<cstdio> #include<cstdlib&g...原创 2018-02-18 11:28:41 · 377 阅读 · 0 评论 -
Corporative Network(LA 3027,带权并查集母题)
题意:两个操作:I u v:把节点u的父节点设为v,距离为|u-v|%1000。输入的u无父节点。 E u:询问u到根节点的距离。题解: 这个可以说是带权并查集的母题了,只不过这里的距离是最直观的节点到根节点的距离,开个权值数组,记录每个节点到根节点的距离即可。 像食物链那类的带权并查集题,距离就是显得抽象了点,思想都在这道题里了。 #incl...原创 2018-02-19 07:55:01 · 213 阅读 · 0 评论 -
POJ---1182(食物链,带权值并查集解法)
题意:经典的并查集:食物链题解: 第一次做食物链的时候,《挑战》这本书上给的是一种称为:扩展域方法。然而这种称为带权值的并查集可以开一个数组记录每个节点到根节点的权值。这里的权值称为节点到根节点的“高度”。#include<iostream> #include<cstdio> #include<cstdlib> #include<algorith...原创 2018-02-19 07:46:01 · 244 阅读 · 0 评论 -
POJ2492---A Bug's Life(做完食物链,再秒这个)
和食物链那个是一种类型的,直接代码。 #include<iostream> #include<algorithm> #include<cstdio> using namespace std; int s[4100]; int Find(int x) { if (s[x] < 0)return x; else return s[x] ...原创 2017-11-19 18:02:24 · 358 阅读 · 0 评论 -
POJ---1308(并查集,判连通,无环)
题意:给定一组数据(u,v)代表u指向v。判断这组数据是否形成一棵树。 题解:利用树的特性:连通且无环。或者利用树的性质:无环(或者联通)且v=e+1;无环可以用并查集去判定。连通可以根据并查集确定有几个根节点来判断。边数V是加的边数,点E可以用set得出。 ①:无环。E=V+1。#include<iostream> #include<cstdio> #include&l...原创 2018-02-17 18:22:55 · 260 阅读 · 0 评论 -
POJ1182---食物链(带权并查集~技巧性超强的解法)
参考:《挑战程序设计竞赛》 这本大佬写的书上面的办法,并没有去刻意的去保存权,来回地更改权值,已达到修改捕食关系的目的。详解如下: 前面的输入的决定了后面的正确与否,前面的输入具有不确定性,这点是题目的要求:“ 当前的话与前面的某些真的话冲突,就是假话; ” 思路: 第一组假设是D为1的情况,也就是两个是同一类的情况,反正没说是这个同一类属于ABC中的哪一类,所以有三种可能,把这三种可能都...原创 2017-11-19 17:21:50 · 295 阅读 · 0 评论 -
L2-010. 排座位
L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无...原创 2018-03-30 08:57:40 · 131 阅读 · 0 评论