并查集小结

       小做了一下并查集相关的题目。就从最基础的开始吧。

       首先是并查集的介绍,非常好的一篇博文:http://blog.csdn.net/dellaserss/article/details/7724401

       其次就是一些习题了。

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

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

       然后是:[POJ2236]Wireless Network

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

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

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

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

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

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

       嘛,因为刷的题也不多,就先到这吧。

你可能感兴趣的:(小结,并查集)