并查集
文章平均质量分 71
鶸鶸
这个作者很懒,什么都没留下…
展开
-
并查集(以hdu1232 畅通工程为例)
这也算是我学的第一个比较牛逼的算法了吧,寒假集训的时候看了一中午,结果还是只会做这种最简单。。怎么说 任重而道远啊 ,现在开始上题 题目就是 很简单的,超级简单的并查集,所谓并查集就是在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。下面直接上代码:原创 2017-01-11 23:26:20 · 234 阅读 · 0 评论 -
Navigation Nightmare POJ - 1984
题意:给你n个点和m操作,每次操作都有a b d op ,表示a点在b点的op方向(有东南西北)距离为d,那么之后会有K次操作,a b c ,表示在第c次操作之前a和b之间的距离。思路:首先他说的是第c次操作之前,也就是我们没有办法直接把并查集全部的建立好,所以首先我们要把操作存起来,之后就是如何运用并查集了,首先有四个方向,东南西北,我们可以建立两个并查集一个是东西方向一个是南北方向,之后就原创 2018-01-20 16:47:05 · 411 阅读 · 0 评论 -
Wireless Network POJ - 2236
题意:给你n台电脑的坐标,一个距离d,这个d的意思是如果两台电脑的距离小于等于d,那么他们可以连接在一起,其中a连b,b连c,那么c可以连a,起初这几台电脑都是坏的,之后给你一组操作,O a,表示修复a这台电脑(它可以和其他好的且距离小于d的电脑连接),S a b 是询问a和b这两台电脑是不是连接在一起,如果是输出成功,如果不是输出失败思路:分析一下这道题,那就是我们现在有一堆电脑,在修复电脑a的原创 2018-01-16 10:24:59 · 192 阅读 · 0 评论 -
O - D-City HDU - 4496
题意:给你n个点m条边组成的图,按照顺序拆一条边,问你每次拆完还剩下多少个联通块儿。联通块儿的定义是,在联通块儿里的每一个点都能直接或者间接的相互到达。思路: 我们都知道并查集建立容易,但是拆除很难,因为在路径压缩之后只有根节点而没有父亲节点了,那我们如何拆除并查集呢? 当删除前K条边时图所剩的连通分量数 就是 N个点孤立时只添加后M-K条边时,所具有的连通分量数。看图:原创 2018-01-17 12:59:24 · 212 阅读 · 0 评论 -
L - Connections in Galaxy War ZOJ - 3261
题意:给你n个星球(每个星球都有一个权值)和m条路以及k条操作,其中q a 是查询,和q连接在一起的最大并且要比a的权值大的星球如果没有就输出-1,de a b 是拆掉原来a和b的联系.思路:在做这道题之前我默认你会了那到D-city的题,那么就很简单了,你只要将根节点成为当前最大值就好了,之后判断一下最大值权值是否别当前的权值大就好了,上代码吧:#include #include原创 2018-01-17 12:38:28 · 234 阅读 · 0 评论 -
hdu 4496 D-City (并查集)
题意:给你一个n个点的完全无向图,之后给你m条边,现在问你每次按顺序删掉这m条边之后图中有多少个联通块儿,联通块儿的定义是在这样一个块儿种的每一个点都可以直接或者间接的到达每一个点。思路:首先明确一点就是在所有拆边前只有一个联通块,而拆完这m条边之后联通块儿的数量为0,那么现在问题就是我们如何删掉这几条边,我们都知道并查集可以建立关系,但是删除关系还是很麻烦,因为在你每次路径压缩之后他原创 2017-07-14 09:10:03 · 200 阅读 · 0 评论 -
The Suspects POJ - 1611
题意:不想编故事了。。题意就是问你和0在同一个集合里的数有多少个,算了,就是题意就是,某地爆发病毒,现在有n个人,m个团体,每个团体有k个人,其中0号是感染者,和感染者在一个团体的人都会被感染,之后被感染者出现在其他团体之后也会感染其他团体的人,问你现在又多少人被感染。思路:就是合并之后查找0这个集合里有多少人吗,比较有新意的是输入方式,在合并团体的时候,你需要先输入一个数之后和k-1个数合并原创 2018-01-16 10:33:56 · 153 阅读 · 0 评论 -
How Many Answers Are Wrong HDU - 3038
题意:给出区间[1,n],下面有m组数据,l r v区间[l,r]之和为v,每输入一组数据,判断此组条件是否与前面冲突 ,最后输出与前面冲突的数据的个数.比如 [1 5]区间和为100 然后后面给出区间[1,2]的和为 200 那肯定就是有问题的了。思路:这是一道带权并查集的模板题,你如果想要ac这道题你需要点的前置技能点是:最基本的向量加减,还有就是看我之后写的一篇讲解博客就好了原创 2018-01-16 10:42:08 · 206 阅读 · 0 评论 -
A Bug's Life POJ - 2492
题意:给你一个T表示T组数据,之后一个n,m表示n个人,m组关系,m组关系式这样的 a b 表示 a和b可以xxoo(没错就是你们想的那个xxoo),之后问你有没有发现性取向不正常的那种人(捂脸。。。)思路:带权并查集。。代码:#include #include #include const int maxn = 2200;using namespace std;int p[ma原创 2018-01-16 11:39:21 · 166 阅读 · 0 评论 -
食物链 POJ - 1182
题意:中文题意开心。前置技能点:在你写这道题之前我已经默认你已经会写简单的带权并查集了,并且也已经完美ac上一道D题了。已经比较理解Rank数组的更新和合并了。思路:首先分析这道题,我们会得到三种关系,同类,被吃,和吃,他们的关系式这样的:a 吃 b ,b 吃 c ,c 吃 a,那么我们怎样把他转化成Rank数组上对应的值呢?要讲的话废话太多还是上图吧我们可以看原创 2018-01-16 11:02:51 · 383 阅读 · 0 评论 -
hdu1285 确定比赛名次(拓扑排序)
上题:Description有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。 Input输入有若干组,每原创 2017-04-10 23:30:23 · 357 阅读 · 0 评论 -
poj—The Suspects(并查集)
上题:Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized as a global threat in mid-March 2003. To minimize transmission to others, the best strategy is原创 2017-04-01 10:53:45 · 359 阅读 · 0 评论 -
kuangbin并查集题解分析
先分析一下这套题吧,其中A,B,C,G,L,M,N,(ps,刚刚看到szt大佬说了做题顺序,那么就按照他说的来就好了)是简单题都是并查集的简单应用,大家可以先写这几道题,其中L,G都挺有意思的 ,大家,大家要多想一下,接下来在我看来都是难题了,剩下的题还牵扯到带权的并查集的应用,这个东西需要用到向量的思想,szt大佬会给大家讲,他这个很强,剩下的题目的做题顺序我推荐的是:D,J,H,E,K,F。简原创 2018-01-16 12:13:15 · 492 阅读 · 0 评论