并查集
文章平均质量分 66
SeasonJoe
这个作者很懒,什么都没留下…
展开
-
codefores741B Arpa's weak amphitheater and Mehrdad's valuable Hoses(并查集+背包)
题意:给出一些女孩的体重和美貌程度,这些女孩是按照组在一起的,要么选一整个组,要么只能选组里的一个,最后求总重量为W的女孩最大美貌程度要求:这一看就是并查集+背包,主要是这个选择的问题,用背包时按组数遍历,每次状态转移一整个组或遍历整个组转移其中一个女孩,这里面的状态转移一开始没怎么搞清楚。#include#include#include#include#include#原创 2016-12-10 12:04:35 · 741 阅读 · 0 评论 -
POJ1703 Find them, Catch them(并查集)
题意:两个两个输入一些数,D代表这两个数不同,A代表查询这两个数是否相同要点:与食物链那一题类似,都是开多倍数组,储存每种情况15321734Seasonal1703Accepted1680K375MSC++973B2016-03-27 18:34:06#include#include#include#d原创 2016-03-27 18:59:37 · 318 阅读 · 0 评论 -
HDU1856 More is better(并查集)
题意:王老师要找一些男生帮助他完成一项工程。要求最后挑选出的男生之间都是朋友关系,可以说直接的,也可以是间接地。问最多可以挑选出几个男生(最少挑一个)。要点:并查集水题,只要求那个集合中个数最大即可,就是数据比较大,所以rank数组就不开了。166989032016-03-28 11:24:07Accepted1856374MS79996原创 2016-03-28 11:27:46 · 292 阅读 · 0 评论 -
POJ1182 食物链(并查集)
题意:中文题不解释要点:很经典的并查集问题,也很难。网上一共两种做法:一种是算相对类别偏移量,用了一系列找规律,难的爆炸,反正我看懂了但是再做一次肯定是做不出来的;另一种是将数组开三倍,表示所有的情况,这种我还可以尝试一下。开三倍数组存储所有情况:要点是将P[X]开成最大值的三倍,1~n表示当前x属于A;n+1~2n表示当前x属于B,2n+1~3n表示当前x属于C,每次原创 2016-03-26 16:12:17 · 310 阅读 · 0 评论 -
HDU3635 Dragon Balls(并查集)
题意:n个城市中有n个龙珠,一开始按顺序排列,但龙珠会转移,输入T A B 代表现在龙珠A所在城市中的所有龙珠都转移到龙珠B所在的城市中,Q A 代表查询龙珠A的所在城市和城市中有多少龙珠以及龙珠A转移了多少次要点:其他不难,主要是查询龙珠A转移了几次这一步比较难,因为我们进行了状态压缩,所以每次只要根节点会增加转移数,而其子树中所有结点都是不增加的。所以我们另设一个数组来记录转移数,原创 2016-03-26 10:32:01 · 303 阅读 · 0 评论 -
HDU1272&&POJ1308 小希的迷宫&&Is It A Tree?(并查集)
题意:中文题不解释要点:两个点之间是否有多种路径就是判断是不是存在环路,所以合并时如果发现两个根结点是相同的,就说明存在环路了。并且还要满足顶点数=边数+1。这题比较恶心的地方在于,如果一开始输入0,0要输出Yes,输入部分比较难写167111702016-03-29 13:50:08Accepted127262MS3368K1009原创 2016-03-29 14:14:50 · 435 阅读 · 0 评论 -
POJ2524 Ubiquitous Religions(并查集)
题意:学校中每个人都有宗教信仰,现在只能知道某些人的宗教信仰相同,求总共有几种宗教要点:水题,跟HDU1213一毛一样,都是求最后集合个数,早知道不做了15315712Seasonal2524Accepted504K313MSC++691B2016-03-26 12:24:55#include#include原创 2016-03-26 12:27:58 · 370 阅读 · 0 评论 -
POJ1611 The Suspects(并查集)
第一次学并查集,总算对它有了一定的了解,基本就是连通的集合的问题参考博客:基本概念 结合一些具体问题题意:学校中一共有m个学生,n个组,学生编号从0~m-1,现在学生0感冒了,如果组中有一人感冒,剩下的人都会感冒,给出每个组的具体学生序号,求出有多少人会感冒要点:并查集裸题,要点是先将所有组合并,最后找到根节点为0的学生数目,要注意0不一定是最终的根节点原创 2016-03-24 22:22:51 · 399 阅读 · 0 评论 -
HDU1213 How Many Tables(并查集)
题意:请客吃饭,认识的才能坐一桌,每次给两个认识的人,求需要多少桌要点:并查集裸题,就是多了一个求最后集合个数的步骤,要求最后集合个数,只要每次合并的时候当前集合数-1即可166721872016-03-25 21:55:04Accepted12130MS1728K738 BC++seasonal#incl原创 2016-03-25 22:20:56 · 349 阅读 · 0 评论 -
HDU3749 Financial Crisis(点双连通分量+并查集)
题意:给出一个图和一系列查询,查询是给出两个点,问两点之间有多少条点不重复的路径要点:明显是点双连通,如果u,v不连通(并查集处理)输出0;如果u,v处于同一个点双连通分量,输出2(注意这里如果这个分量只有两个点一条边输出1);如果不同,输出1即可。注意这题有个地方要处理,我们知道割顶可以是好几个点双连通分量的公共点,所以如果直接用白书上的bccno数组来判断割顶处于哪个点双连通分原创 2016-11-06 10:38:01 · 501 阅读 · 0 评论 -
PAT1034 Head of a Gang (30)(并查集)
题意:给出n次通话记录,当通话的人数超过2人并且通话总时长超过k时,这些人就是犯罪团伙,其中通话时间最大的人是头目,要求按字母序输出头目和团伙人数思路:就是并查集,将两两通话的人关联在一起,因为通话的人的姓名是按三位字母给出的,所以要离散化,并且对应要用一些STL保存映射。我自己写的时候有两个点没过,后来改过了,错误原因写在下面注释里了。网上的代码也有用DFS找连通分量做的。#i...原创 2018-04-18 22:32:18 · 281 阅读 · 0 评论