并查集的相关题目

这几天一直在刷并查集的题目,对于并查集的较难的题目,等着功力深厚了在做吧。

先说一下杭电上面的题目:并查集专题链接http://acm.hdu.edu.cn/problemclass.php?id=721


hdu1116:先用并查集判断图是否联通,再看是不是存在欧拉路径。(利用欧拉路径需要满足的顶点度数的要求).要注意题意的转换

hdu1142:这题没有用并查集解决。先用dijkstra算法求出终点到其他各个顶点的距离,再用记忆化搜索求出满足条件的dp[1];

hdu1213:简单的并查集的应用。合并同类。

hdu1232:利用并查集判断图的联通性

hdu1272:再做一遍。

hdu1325:这题和poj的一个题一样

hdu1558:判断线段相交和简单并查集的应用。

hdu1856:简单并查集的应用

hdu3038:求错误答案的个数。修改并查集的并和查的函数。

hdu3047:和上一题很相似。

hdu3461:理解题意的基础上,用并查集和二分求幂。

hdu3635:如果在合并函数里更新每个龙珠的移动次数的话,会tle.要在查询函数里面更新。并且应该用scanf代替cin.

hdu3926:判断图是否同构。求出每个图的环的个数和链的个数。以及每个环和每个链包含的节点的个数。

剩下的5个题,暂时不会做。等过段时间再回来做。


poj上面的题目:

并查集的相关题目_第1张图片

poj1308:判断是不是一棵树。要注意的地方:空是树;森林不是树;

poj1611:简单的并查集的应用

poj1703:找规律。修改find()和merge()。

poj2236:增加判断条件。

poj2492:找规律。修改find()和merge()。

poj1182:食物链的问题。找规律。修改find()和merge()。还有判断条件

poj还有很多有关并查集的题目,那些题目大多数和其他类型的题目相结合。比较难。


做了这20多道题目,感觉并查集的题目还是比较容易想思路的。以我现在的功力,大概只能将并查集分为两个大类:(可能不太准确)

1.简单的并查集应用。判断图的连通性等。这种情况下每个节点代表的类型与根节点代表的类型是相同的。不需要修改find()和merge()函数。有些时候可能只需要添加判断条件即可。这种情况下的并查集可以和很多小问题结合起来,也可能作为处理其他问题的前提条件(经过并查集的处理才能应用别的算法)

2.比较难的。此种情况下每个节点代表的类型与根节点代表的类型不相同。非根节点与根节点的关系可以有2种,3种等等。这种情况下,需要找出规律,就是枚举每个节点的取值情况,看得出的根节点的值。找出规律。往往需要修改find()函数和merge()函数,还要需要添加相应的判断条件。

并查集可能还有更多的分类,我感觉会随着做题的深入更加加深对并查集的理解的。









你可能感兴趣的:(算法,并查集,poj,hdu)