Onway

我是一只菜菜菜菜鸟...
posts - 61, comments - 56, trackbacks - 0, articles - 34

并查集二题

Posted on 2010-03-26 09:40 Onway 阅读(165) 评论(0)  编辑 收藏 引用 所属分类: 伤不起的ACM

PKU1308
好像是星期二晚看的题,一个小时写出来,错了,看了discuss,有些数据确实不能过,自己也没考虑到。也够钟熄灯睡觉了,只能搁下这个题了。星期三,上课。星期四,去医院,回来没啥心思,有心思那个时候断网了。
一直留到今天星期五的早上。其实这个题真的没啥好说的,算法和数据结构都没啥特别,就是要考虑很周全,对着这个题目,要问很多个“这样可不可以呢”,漏问一个可能就错了,问了还得记下来,不然写的时候可能又漏。
写的时候及之前,我就是这么做的,写的过程很吃力,结果还是漏掉了很多情况,而郁闷的是我考虑的情况都不是题目要考虑的。特别的是我漏的情况都是属于边界数据之类的,在出这些数据的能力还是很差。
还要提醒自己的是,很多情况分析后一定要看看有没有同属的情况,不然真的写得很累。

 

PKU1861
在PKU1861里,循环下标从一开始,但我用了vector的push_back,sort,都没有注意这个问题,在试调花了不少时间,还导致了一个Validator Error,当然将相同代码再提交就WA了,不知道怎么回事。


暂结:
1.可以只用一个关系数组来作辅助
2.关系中的合并与查找可以写得不那么分明,毕竟也只有几个语句。当然分两个函数来写,思路都结构都会比较清晰。
3.判断两个对象所在集合不能直接用关系数组进行一次对比,即不能通过比较父亲,而是要循环到集合顶点,即祖先。
4.同样,合并两个对象,也要找到集合顶点。
5.并查集还有路径压缩的东西。

ps:在杭电找了几个说是并查集的题,看了两个,不会做。感觉有点难,看起来也不像并查集。还是先这样吧,校赛将近,还有别的要复习准备,不能一个算法吊死。


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理