![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
文章平均质量分 75
交错的0与1
这个作者很懒,什么都没留下…
展开
-
hdu 3047:Zjnu Stadium
一个环形体育场,座位为环形,一圈有300个座位。有n个人,分别编号1~n,需要满足m个条件,格式为“A B X”,意为B距离A顺时针X个座位。问有几个条件不符合。 带权并查集。要注意的是用以往的风格写get_root函数会错,比如说 dis[i] += dis[fa[i]] ; return fa[i] = find(fa[i]) ;这样就错了,因为例如5-> 4 ->原创 2014-03-06 23:03:28 · 403 阅读 · 0 评论 -
hdu 3038:How Many Answers Are Wrong
TT和FF玩猜数游戏。一个未知数列,FF给出区间[a , b],TT给出该范围内的数字和。但有时TT会给出错误答案。给定数列长度n与区间数m,之后每组给出区间范围a , b与TT给出的和s,求错误答案的数量。测试数据不止一组。 用前缀和的思想来考虑数列,于是可以用带权并查集来做。注意做的时候虽然每组给出的范围为a~b,求的时候要用(a-1)~b,这样才是前缀和。#include原创 2014-03-06 23:05:48 · 453 阅读 · 0 评论 -
hdu 3172:Virtual Friends
交友网络。有多个数据,每组数据中给出n个交友网络,每个交友网络给出m条交友关系,求该交友网络中有几个人。 用并查集来做,思想是用带权并查集的思想,把每条关系的权值看成1,每多一个人就在这个交友关系的根节点上加1。这题需要注意的是,它的测试数据量很大,cin、cout用太多会超时,所以在输出时要用printf。还有输入的是人名,所以可以用map建立一个映射。#include #原创 2014-03-06 23:13:49 · 466 阅读 · 0 评论 -
hdu 1213:How Many Tables
某人要办一个派对。他请来他的朋友,他需要准备桌子。而坐在同一桌的人必须相互认识。给T组数据,每组数据给定总人数n及朋友关系对数m,接下去给出朋友关系。注意,如果A认识B,B认识C,则A、B、C相互认识,可以坐在同一桌。并查集呗。第一次做并查集的题目,把我坑惨了,一开始只写了找根节点的函数,然后发现需要考虑成环的情况,于是修改,还是WA,然后又想到要考虑比如1 2、1 3之后3 3重置的原创 2014-03-06 22:46:11 · 419 阅读 · 0 评论 -
hdu 1232:畅通工程
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? 中文题,不多描述。做法:并查集 或 bfs、dfs# include # include # include using namespace s原创 2014-03-06 22:48:23 · 389 阅读 · 0 评论 -
hdu 1272:小希的迷宫
迷宫,判断给出的迷宫是否有回路,即判断是否成环。 方法:并查集 或者深搜宽搜比较坑的是要注意只有0 0的时候要输出yes,只有1 1 0 0这样的数据时要输出no。还有,我的Union函数里fa[root_x] = root_y这样写会暴栈,改成fa[root_x] = root_y就能过,这是怎么回事。。。。# include # include # includ原创 2014-03-06 22:51:21 · 378 阅读 · 0 评论 -
hdu 3461:Code Lock(有待思考)
这道题现在也半懂半不懂的,题意基本看不懂,第二组样例的26怎么得出来的也不知道,以下是参照网上的说法编写的,这道纯粹的用来练习的。这题在这里留着,日后再研究。 方法:按照网上说的,是用了并查集与二分求幂来做。然后这里练习了并查集与快速幂。要注意的是,这里的快速幂在求时要注意sum和t不能用int型,因为中间会爆int,所以要改用long long来做。#include usi原创 2014-03-06 23:10:57 · 495 阅读 · 0 评论