2011.10.28 poj2421 Constructing Roads 解题报告
来源:互联网 发布:eve online mac版 编辑:程序博客网 时间:2024/05/22 14:28
今晚写算法的时候,俺的手指各种犯贱,各种敲错。泪奔啊~~~
题目不贴了,自己看吧。http://poj.org/problem?id=2421
MST(最小生成树)水题一道,我却做了好久。待会分析原因(第四部分)。
一、做题状况:前几天看了算导MST的那一章(其实,大概半年前就看了些,当时觉得贪心算法没掌握好,所以只看了一半,想掌握好贪心后再回来看,现在觉得很多时候前面的坎要自己越过去,有些坎可以以后再迈)。对Kruscal算法和Prim算法心里有了基本的认识。今天特意找到这道MST题测一测。
二、思路分析:其实也没太多可以分析的,最经典的MST,区别是,现在已经有些道路(线)已经建立好,怎么解决这个问题呢? 聪明人的答案是:把对应这条线赋值0。很可惜,我不是聪明人。。。
三、题目类型:MST
四、进步Kruscal算法:今天写代码真是手贱啊,犯了好几处傻。
第一次:忘记输入已建好的道路的标号是从1开始的,而程序的索引是从0开始的。
第二次:在进行树合并的过程中,忘了更新各棵树的根了,导致每次都全部加起来了。
第三次:没考虑到更新的过程中,有可能把更新过程中需要用到“原始变量”直接更新了,那么以后比较的是什么?是新的树根了!不是我们Expect的那个树根!
PS:还好有算导上面的那个例子,供我单步调试,否则我估计今晚就可以去死了。
待会写Prim算法,及时更新~~~
...失败。。。Prim里确实要用到二叉最小堆,或者至少要建立一个数据结构集合来维护当前“周围可选的线段”。明天写好Prim版本的程序!!!!!!
写完了,Prim算法的速度比Kruscal算法要几乎快3倍,不过实现起来稍微复杂一些。看来二叉堆的相关操作也不是很难,高手几分钟的事情就可以搞定,尽管我不是高手,至少现在不是。BTW,编程珠玑上的二叉堆实现,真是精炼到了极致,算导是一本《孙子兵法》,而编程珠玑则是一本《实战宝典》。
以后还是要不断的练,像那天侯毅凌教授在北邮教三里的对英语演讲讲座上说的那样,practise!practise!practise!
- 2011.10.28 poj2421 Constructing Roads 解题报告
- POJ2421 Constructing Roads
- poj2421 Constructing Roads
- POJ2421 Constructing Roads
- poj2421 Constructing Roads
- POJ2421 Constructing Roads
- HDU1102&&POJ2421 Constructing Roads
- poj2421 [java]Constructing Roads
- POJ2421 Constructing Roads
- poj2421 Constructing Roads
- 2421 Constructing Roads 解题报告
- poj2421——Constructing Roads
- poj2421 Constructing Roads (prime)
- HDU1102 Constructing Roads 解题报告--prim
- POJ-2421-Constructing Roads 解题报告
- H - Constructing Roads(解题报告)
- poj2421解题报告
- POJ2421 Constructing Roads [最小生成树 prim]
- [转载]模式识别领域的期刊会议
- 【转载】结构体对齐问题
- s3c6410 LCD在uboot下的驱动
- PHP编程学习之路 1
- Java与C++在面向对象基本概念上的区分
- 2011.10.28 poj2421 Constructing Roads 解题报告
- 模式识别网络资源链接
- Java程序,java对象内存占用信息获取
- 计算机视觉文献与代码资源及资料
- js arguments对象说明
- C#事件例子
- 麻省理工学院(MIT)研究生学习指导怎样做研究生
- Objective-C学习-查找文件
- strcpy()、memcpy()、memmove()、memset()的实现