![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
波波i
此微博用来学习,和嘿嘿嘿。
展开
-
2006河南省赛第一试 旅行(并查集)
题意:Z小镇附近共有N个景点,这些景点被M条道路连接着,所有道路都是双向的,对于一条给定的公路Ri,任何在该公路上行驶的车辆速度必须为Vi。最大速度和最小速度的比尽可能小的路线。(n<500 m<5000 v<30000)思路用最短路得话好像不是很好搞,反正我是没有想出怎么最短路,然后正好在学并查集。就用并查集搞了一波。 给他的边按速度排序,然后一个个枚举,找到哪一个就可以联通了,因为是排序过得,原创 2016-12-14 19:27:27 · 264 阅读 · 0 评论 -
【Usaco2009 gold 】修建道路
题意:求最小生成树思路:把他给你的边当做长度为0,然后根据欧几米的距离连边,并查集搞一搞,就好了程序: type Point=record x,y:longint; w:real; end;const maxn=1000000; maxv=1000;var f,x,y:array [1..maxn] of longint; s:array [1..maxv,1原创 2017-01-17 16:15:12 · 354 阅读 · 0 评论 -
七天使的通讯(angelus)
题意:给你m条线,从一个点到另一个点,黑线白线自己随便想,同种颜色的线不能相交,问你是否可以连成功,可以输出sane不然输出non。思路:1.强行把第一个为白色,然后和他冲突的为黑色,如果有一个在后面被搜索到,而且颜色和要改的颜色不同,那么就是不可以达成的。用并查集或者dfs实现。程序:const maxn=10000;var f,x,y:array [1..maxn] of longint;原创 2017-01-15 19:36:11 · 346 阅读 · 0 评论 -
银河英雄传说(并查集)
题意:传说杨wl为了打宇宙大战,然后搞了一个舰队,一开始用一字整形,然后为了战斗,就要调整队形,他可以把i行舰队的所有飞船都搞到j行去。 同时他也想知道两个飞船之间有多少飞船。 如果不在同一行就输出-1.思路:发现用并查集不可以,因为路径压缩的时候会有问题,为了解决这个问题,就多开两个数组,一个用来维护这个飞船在的行的第几个,一个用来维护每行的最后一个const maxn=3000000;v原创 2016-12-17 11:45:34 · 730 阅读 · 0 评论 -
矩形(并查集)
题意:• 在平面上画了N个长方形,每个长方形的边平行于坐标轴并且顶点坐标为整数。我们用以下方式定义印版: – 每个长方形是一个印版; – 如果两个印版有公共的边或内部,那么它们组成新的印版,否则这些印版是分离的 就是把两个相交的矩形变成一个思路:判断他们是否是相交,是的话就用并查集放到一个集合里面去,然后看被分成几个集合就好了const maxn=10000;var f,x1,y1,x2原创 2016-12-15 17:46:25 · 408 阅读 · 0 评论 -
POJ 2560Freckles(并查集)
题意:找出一条最短路,额…….n<100;思路:并查集最短路搞一波,然后就没了….时间复杂度O(**)type arr=record x,y:longint; w:real; end;const maxn=100;var a:array [0..maxn*maxn] of arr; f:array [0..maxn*maxn] of longint; x,y:array [原创 2016-12-15 17:41:43 · 254 阅读 · 0 评论 -
poj 1611 食物链(并查集)
题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是“1 X Y”,表示X和Y是同类。 第二种说法是“2 X Y”,表示X吃Y。 此人对N个动物,用上述两种说法,一句接一原创 2016-12-17 09:22:05 · 220 阅读 · 0 评论 -
POJ 2524 Ubiquitous Religions
题意:给你n个数,和m个关系,问他最多有多少个集合思路:用并查集,把他们的关系搞一下,最后再用桶对他们的祖宗搞一下,统计个数就好了。 时间复杂度:O(max(n,m))const maxn=1000000;var a,f,b,t:array [1..maxn] of longint; i,j,n,m,ans,o:longint;function father(x:longint):long原创 2016-12-16 19:50:46 · 184 阅读 · 0 评论 -
POJ 1611 The Suspects
题意:给你1~n-1个数,然后给你m个组,求有多少个和零一组。(n<30000)(m<500);思路:把他们全都分到各自的集合,如果和0的集合相同就可以统计一下,用并查集就好了。 时间复杂度: O(n*m);const maxn=30000;var a,f:array [0..maxn] of longint; o,k,i,j,n,m,ans:longint;function father原创 2016-12-16 19:46:12 · 277 阅读 · 0 评论 -
SSL1896家族(并查集)
题意:你有n个人,给你其中m个亲戚关系,问你其中p个得关系是什么,是亲戚输出yes,不然输出no。 如果1和3是亲戚,2和3是亲戚,那么1和2也是亲戚 n,m,p<50000思路:并查集得经典例题,把他们是属于亲戚关系的放到一个集合里面,给一个父亲节点。然后找就只用找他们的父亲是否相同就好了。时间复杂度O(n*****),表示有点看不懂….反正很小就是了const maxn=50000;va原创 2016-12-13 19:27:17 · 265 阅读 · 0 评论 -
最小生成树(并查集)
题意:找一课最小生成树思路:基本思想:每次选不属于同一连通分量(保证无圈)且边权值最小的2个顶点,将边加入MST,并将所在的2个连通分量合并,直到只剩一个连通分量 算法实现: 将边按非降序排列(Quicksort,O(E㏒E)) While 合并次数少于|V|-1 取一条边(u,v)(因为已经排序,所以必为最小) If u,v不属于同一连通分量 then 合并u,v所在的连通分量 输出原创 2016-12-14 19:33:47 · 230 阅读 · 0 评论 -
5904. 【NOIP2018模拟10.15】刺客信条(AC)
题目大意:故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害,决心成为一名刺客。最终,凭借着他的努力和出众的天赋,成为了杰出的刺客大师。刺客组织在他的带领下,为被剥削的平民声张正义,赶跑了原本统治意大利的圣殿骑士首领-教皇亚历山大六世。在他的一生中,经历了无数次惊心动魄、扣人心弦的探险和刺杀。这次的故事就是他暗杀一位作恶多端的红衣主教。...原创 2018-10-15 21:52:13 · 293 阅读 · 0 评论