您的位置:首页 > 其它

并查集小结

2015-09-10 17:20 169 查看
小做了一下并查集相关的题目。就从最基础的开始吧。

首先是并查集的介绍,非常好的一篇博文:/article/2376314.html

其次就是一些习题了。

首先是这道题目:[POJ1308]Is It A Tree?

整道题就是需要你判断给出一个有向图是不是一棵树。这里会使用到并查集来判环,算是并查集的基础应用(也就是判断元素是不是属于一个集合)。

然后是:[POJ2236]Wireless Network

算是基础应用的一个小提升。在修补电脑时,需要把周围被修补的电脑合并起来,如果对并查集概念理解不透彻,会出岔子。

接着就要说到进阶一点的并查集题目了。

[POJ2492]A Bug's Life、[POJ1182]食物链

这两题就涉及到了一个新名词:种类并查集。

这一类并查集并不会直接考察你a、b是不是属于同一个集合呀?而是变相的告诉我们某个与某个的关系,求某个与另外一个的关系。很经典的一句话就是:『陈冠希是谢霆锋情人的情人......谢霆锋是男人,所以陈冠希也是男人』。我知道的有两种做法:一种是开多个并查集,来表示某个与某个的关系,比如食物链那题,可以开三个集合,集合a与集合b相并,代表着这a吃b。另外就是使用向量的偏移来表示集合间的关系,这部分大概理解了,目前还在消化中,给个具体介绍这种方法的博文地址:/article/1998081.htmlhttp://blog.sina.com.cn/s/blog_3f3a72e30100devr.html

另外还有:带权并查集

这一类需要在路径压缩时对值进行更新。感觉技巧在于对路径压缩的理解上(好吧,我也不清楚XD)。具体题目:[POJ1988]Cube Stacking

这题之后可以用以下步骤尝试区间并查集:先[HDU 3038]How Many Answers Are Wrong,然后[POJ
1733]Parity game每道题都会用到之前那道题的思想。区间并查集给我的感觉是:抓住区间端点的父结点,当父亲结点相同时才进行比较,其它时候都是可以瞎扯淡的。并且都用上了路径压缩上的权值更新(准确点说是关系更新)。

最后说一道神奇的用并查集优化贪心的题目:[POJ1456]Supermarket

在整个查找可用日期的过程中,使用了并查集来优化,每一次被使用后让父亲节点前移,不论是谁使用了这个日期,最终都会仅有一个物品使用了这个日期,感觉用得非常巧妙呀。

嘛,因为刷的题也不多,就先到这吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: