
并查集
文章平均质量分 84
丶阿明
Hello World!
展开
-
POJ 2492 A Bug's Life
分析:给你多只虫子的关系,判断有没有gay,一开始初始化他们都没有对象relative[i]=0;如果a,b都没有对象,那么a的对象是b,b的对象是a;如果a有,b没有,b的对象就是a,把b加入到a的对象的集合中;b有,a没有同理;如果a,b都有对象,就把他们加入到各自的对象集中,一只虫子的第一个对象为老大,后来加进来的都要归他管。# include int flag,root[2005原创 2015-07-13 20:42:58 · 555 阅读 · 0 评论 -
HDU 5285 wyh2000 and pupil
分析:这题和POJ 2492差不多,所以我用的是并查集,可以把题意理解为有很多人,要分成两个帮派,每个帮派至少有1个人,输入n,m分别代表n个人,和m对有冲突的人,有冲突的不能在一个帮派里,要尽可能的使第一个帮派的人多一些,如果存在输出第1,2个帮派的人数,否则输出Poor wyh 。如果输入n=0或n=1的话肯定不满足题意,用root[]数组记录每个人的老大是谁,opp[]记录每个人的对手是原创 2015-08-20 10:21:14 · 536 阅读 · 0 评论 -
HDU 5253 连接的管道
分析:题意就不说了,因为这题的高度差比较小,所以可以用并查集暴力求解,做的时候发现带参数的宏定义的效率很低,比如我用# define abs(x) (x>0?x:-(x)) 这样就超时了,写个函数就不会超时,用暴力的话,一不小心就超时了。这题还可以用Kruskal的最小生成树来做,但速度居然没有暴力的快,也许是我写的姿势不对。并查集暴力:# include # include in原创 2015-08-21 14:40:27 · 472 阅读 · 0 评论 -
HDU 5652 India and China Origins
题意:给你n*m的矩阵,0代表平原,1代表高山,接下来q年,每年在(x,y)的位置长出一座高山,问你第几年中国和印度不连通。分析:第一种做法是BFS判断能不能从中国走到印度,如果一年一年找的话就会超时,所以查找第几年的时候,可以用二分查找,这样会快很多。第二种做法是并查集,第0列的所有山都并起来,第m-1列的所有山都并起来,对于每座高山,把它周围8个方向的高山并起来,最后判断第0列和第m-原创 2016-03-31 20:29:25 · 491 阅读 · 0 评论