并查集小结
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.html和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
在整个查找可用日期的过程中,使用了并查集来优化,每一次被使用后让父亲节点前移,不论是谁使用了这个日期,最终都会仅有一个物品使用了这个日期,感觉用得非常巧妙呀。
嘛,因为刷的题也不多,就先到这吧。
首先是并查集的介绍,非常好的一篇博文:/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.html和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
在整个查找可用日期的过程中,使用了并查集来优化,每一次被使用后让父亲节点前移,不论是谁使用了这个日期,最终都会仅有一个物品使用了这个日期,感觉用得非常巧妙呀。
嘛,因为刷的题也不多,就先到这吧。
相关文章推荐
- 安卓错误E/AndroidRuntime(4054):java.lang.NullPointerException
- 我的vimrc 配置
- 如何解决ajax跨域问题
- memcached全面剖析–3. memcached的删除机制和发展方向
- 观察者模式
- 线性表的操作(完成表的建立,插入,删除,排序,销毁,查找 )
- Mysql常用优化方法
- file 上传样式
- 机会模型与显著性检验(二)
- 使用Timer的schedule()方法
- CentOS6.5下kafka+ZooKeeper下载与安装详细教程-多机版本1
- 【.Net码农】Asp.net 2.0实现多语言
- C++Primer第五版 1.3节练习
- memcached全面剖析–2. 理解memcached的内存存储
- 初识android vector drawable
- ASP.NET实现按拼音码模糊查询的方法
- 《碟5》首映,马云力挺阿里影业释放什么信号?
- app被拒的原因
- Java中Runnable和Thread的区别
- 基于asp.net + easyui框架,js实现上传图片之前判断图片格式,同时实现预览,兼容各种浏览器+下载