并查集
文章平均质量分 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代表查询这两个数是否相同 要点: 与食物链那一题类似,都是开多倍数组,储存每种情况 15321734 Seasonal 1703 Accepted 1680K 375MS C++ 973B 2016-03-27 18:34:06 #include #include #include #d原创 2016-03-27 18:59:37 · 318 阅读 · 0 评论 -
HDU1856 More is better(并查集)
题意: 王老师要找一些男生帮助他完成一项工程。要求最后挑选出的男生之间都是朋友关系,可以说直接的,也可以是间接地。问最多可以挑选出几个男生(最少挑一个)。 要点: 并查集水题,只要求那个集合中个数最大即可,就是数据比较大,所以rank数组就不开了。 16698903 2016-03-28 11:24:07 Accepted 1856 374MS 79996原创 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,输入部分比较难写 16711170 2016-03-29 13:50:08 Accepted 1272 62MS 3368K 1009原创 2016-03-29 14:14:50 · 435 阅读 · 0 评论 -
POJ2524 Ubiquitous Religions(并查集)
题意: 学校中每个人都有宗教信仰,现在只能知道某些人的宗教信仰相同,求总共有几种宗教 要点: 水题,跟HDU1213一毛一样,都是求最后集合个数,早知道不做了 15315712 Seasonal 2524 Accepted 504K 313MS C++ 691B 2016-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 · 398 阅读 · 0 评论 -
HDU1213 How Many Tables(并查集)
题意: 请客吃饭,认识的才能坐一桌,每次给两个认识的人,求需要多少桌 要点: 并查集裸题,就是多了一个求最后集合个数的步骤,要求最后集合个数,只要每次合并的时候当前集合数-1即可 16672187 2016-03-25 21:55:04 Accepted 1213 0MS 1728K 738 B C++ 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 评论