并查集
aozil_yang
这个作者很懒,什么都没留下…
展开
-
例题6-16 UVA 10129 Play On Words单词
大体题意:给你n个单词,问是否可以首尾相连,就是单词接龙!思路:看了下LRJ写的,用到了并查集判断有向图是否连通。单词可以根据首字母,尾字母进行分类集合,最多26个集合!字母看作结点,单词看成有向边。有解的情况:1.必须连通2.出度不等于入度的只能有0个或者2个!有两个的情况还必须满足,一个出度比入度大1 (起点),入度比出度大1(终点)!可以用lef表示剩余的原创 2016-02-23 00:09:29 · 521 阅读 · 0 评论 -
Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) -- C. Destroying Array (并查集)
大体题意:给你n 个数字,告诉你破坏每个数字的顺序,每次破坏后你要求一个线段,使得线段不包含破坏的点,并且线段上的值和最大?思路:正着删除感觉不好处理,就反过来求了,相当于从一个空序列往上面添加数值,加一次,求一次线段的最大和,在加之前,我们可以先定义一个变量Max 表示之前的操作所得到的最大线段和,然后和加入后进行比较!加入某个值后,用了并查集进行处理,令c[i]是 i 这个点的原创 2016-10-02 00:37:21 · 549 阅读 · 0 评论 -
Codeforces Round #375 (Div. 2) -- F. st-Spanning Tree(并查集 构造生成树)
大体题意:给你一个无向图,要求构造出一个生成树来,使得s,t 的度数不超过ds 和dt,多解任意输出!思路:很好的一道题目,请教了学长!先把s和t结点去掉,构造出多个连通块来,然后依次于s和t 相连!既能连s又能连t的联通块是比较好的,最后在处理,先把那些只能连接一个节点的联通快先连起来,并且计数统计!然后在根据当前的计数来加那些万能联通块。注意:细节比较多,说几个原创 2016-10-05 10:17:33 · 464 阅读 · 0 评论 -
UVALive 4035 Undetectable Tour (二分 + 并查集)
大体题意:你要从左下角走到右上角,但是安装了k (k 思路:只要能够从左边或者上边出发 找一系列连续的监视器 链接到右边或者下边 我们就逃不了! 因此我们先给每个监视器按照范围排序,找一个合理的值 前面的肯定都符合 后面肯定都不行!难点就是判断这个半径行不行,方法是并查集,把左上边看成一个点,把右下边看成另一个点,其余监视器都是点,能相连就相连 最后如果发现左上边和右下边相连肯原创 2016-11-21 01:01:35 · 452 阅读 · 0 评论 -
Codeforces Round #385 (Div. 2) -- C. Hongcow Builds A Nation(并查集)
大体题意:给你n 个点m个边的图,告诉其中一些点是政府点,如果任意两个政府点 不能直接或者间接到达的话,那么称这个图就是一个稳定的图,要求让你在这个图中加尽量多的边,使得 这个图还是稳定的!思路:其实思路很简单:简单的并查集应用!因为题目保证输入的图一定是一个稳定的图,那么每一个政府点 都在一个独立的并查集内部!我们先给每一个并查集内部的点进行连接! 任意连接都是合法的!原创 2016-12-18 11:21:48 · 527 阅读 · 0 评论 -
Codeforces Round #395 (Div. 2) -- C. Timofey and a tree(并查集+缩点)
大体题意:给你一棵树,要求找一个结点来作为根节点,使得所有的子树颜色都一样,整棵树不是子树,其余的是,存在的话输出那个点。思路:并查集+缩点。先把颜色一样的,并且连在一起的点缩成一个点。(类似连通块) 缩点后也一定是树。这样最后的形式就是 一个根结点连接着很多其他结点,这样枚举所有的边,统计一下缩点的度数。找出那个度数为总和-1的那个点就是答案,没有的话,就是NO咯。原创 2017-02-03 01:57:24 · 443 阅读 · 0 评论 -
HDU 1829 A Bug's Life(种类并查集)
题意:给你n 个人,m 个操作, 每个操作告诉你两个人不是一个性别的,问你能否给所有人分成两组不冲突。思路:加权并查集取模变成种类并查集。好不爽,个人赛时竟然花费了一小时在一道简单的种类并查集上,于是就找了几个类似的水一水= =!我们记录每个结点父节点时,在开一个数组a,记录这个结点到根结点的距离。这样 如果一个操作中的两个人在一个连通块时,那么只需要判断它们的距离是否是一原创 2017-03-19 01:16:00 · 470 阅读 · 0 评论 -
UVA 1627 Team them up!(二分图染色+并查集+背包)
大体题意:告诉你n 个人的关系,要求所有的人分到两个组里,要求一个组里的人相互都认识。 每个人都必须要分到一个组里。 最后要求两个组的人员差值最小。最后输出两个组的人员。顺序随便输出即可。思路:当i 和j 不满足互相认识的话,就连接一条边,把能连通的点压到一个连通块里。这样会得到k 个连通分量。这样 就可以给每一个连通分量 进行二分图染色,当染色矛盾时,一定No solutio原创 2017-03-07 22:37:11 · 693 阅读 · 0 评论 -
UVA 1664 Conquer a New Region (并查集+贪心)
题意:n 个城市形成一棵树,每条边有权值C(i,j),任意两个点的容量S(i,j)定义为i与j 唯一通路上容量的最小值,找一个点,使得它到其他点的容量之和最大,求最大值?思路:贪心思路。我们给边从大到小排序,因为是一棵树, 每个边都要处理。因此当前枚举的边一定是当前集合中 最小的边,因此他就是容量, 我们分别让两个端点的并查集父亲 作为中心城市, 找一个大的进行合并即可。这原创 2017-03-13 22:04:01 · 465 阅读 · 0 评论 -
CCF 习题 201512-4 送货 (并查集 + DFS 找欧拉道路)
大体题意:要求从1号出发,一笔画经过所有的路,问是否有解,并打印字典序最小的解?思路:显然是无向图的欧拉道路!先判连通,直接用并查集了,不连通直接-1了连通的话,在看看每个点的度数,当奇点的个数不是0 并且不是2 肯定是-1如果是2 的话,1号结点是偶数度数的话也是-1否则我们就可以从1号结点直接dfs找路了!注意:不能再dfs之前就输出路径,这样是不对的原创 2016-09-08 09:39:53 · 1074 阅读 · 1 评论 -
HDU 5883 The Best Path (枚举 欧拉通路)
大体题意:给你一个无向图,每个点有权值,你要从某一个点出发,使得一笔画经过所有的路,且使得经过的节点的权值XOR运算最大!求最大值!思路:首先得知道一些关于XOR运算的性质:1.如果一个数异或偶数次,那么这个结果是0!2.如果一个序列是确定的,那么异或的顺序不影响最终的结果!有了这两个性质,那么这个题就很简单了!首先它得是一条欧拉通路:1.它必须是联通的,对于这个题原创 2016-09-18 20:33:25 · 849 阅读 · 0 评论 -
LA 3644 X-Plosives 易爆物
题目大意:一个化合物包含两个元素,一旦发现K个化合物中恰有K种元素,则会爆炸,应该禁止上车!问禁止上车化合物的数量!思路:类似于单词接龙,把元素看成顶点,化合物看成边,存在环的时候是危险的,可以在输入的时候判断,就是x,y在同一个集合中时,就禁止上车!注意:注意输入格式 多组数据!#includeconst int maxn = 100000 + 10;int pa[原创 2016-02-23 13:43:39 · 378 阅读 · 0 评论 -
HDU 1198 Farm Irrigation (并查集)
Farm IrrigationTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8691 Accepted Submission(s): 3744Problem DescriptionBenny has原创 2016-05-14 11:15:45 · 330 阅读 · 0 评论 -
HDU 1213 How Many Tables (简单的并查集)
How Many TablesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22769 Accepted Submission(s): 11328Problem DescriptionToday is原创 2016-05-18 13:44:25 · 286 阅读 · 0 评论 -
UVA - 1329 Corporative Network 合作网络(并查集)
大体题意:有n 个结点,初始时每个结点的父节点都不存在。你的任务是执行一次I操作和E操作,格式如下:I u,v 把结点u 的父节点设置为v,距离为|u-v|%1000 保证u没有父节点。E u,询问u到根节点的距离!思路:并查集:用d[u]表示u结点到根节点的距离。每次E操作都初始化父节点和 距离!每次I操作 都要查一下父节点,find,在find过程中更新d数原创 2016-07-10 14:31:25 · 399 阅读 · 0 评论 -
HDU 5438 Ponds (DFS + 并查集)
PondsTime Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 3558 Accepted Submission(s): 1063Problem DescriptionBetty owns a lot of po原创 2016-08-01 11:06:16 · 588 阅读 · 0 评论 -
HDU 5441 Travel (并查集)
TravelTime Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2882 Accepted Submission(s): 984Problem DescriptionJack likes to travel a原创 2016-08-01 11:19:18 · 381 阅读 · 0 评论 -
HDU 4496 D-City (并查集)
D-CityTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 3267 Accepted Submission(s): 1166Problem DescriptionLuxer is a really bad g原创 2016-08-02 19:35:18 · 399 阅读 · 0 评论 -
POJ 3310 Caterpillar (BFS + DFS + 并查集)
CaterpillarTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 2289 Accepted: 1074DescriptionAn undirected graph is called a caterpillar if it is connected,原创 2016-08-19 00:33:39 · 661 阅读 · 0 评论 -
UVA 1455 Kingdom (线段树 + 并查集 + 离散化)
题意:给你n 个城市,初始时,没有任何双向道路相连接。两种操作:1. 将A点和B点连接。2.询问一条y = C的水平线 和多少个连通块 多少个点连接。思路:因为询问只是涉及到y 坐标。并且数据较大。我们直接存下所有的y 坐标 离散化一下。然后就可以建立线段树了。线段树维护两个值 一个时连通块个数,一个是点的个数。操作1 ,我们维护每个连通块 y 坐标最大和最原创 2017-07-31 17:25:04 · 336 阅读 · 0 评论