2011年10月16日
摘要: http://poj.org/problem?id=1141这是一道典型的动态规划题目,过去做过类似的,如POJ3391,思路几乎一摸一样,但是这道题目唯一比较讨厌的地方就是,得构造出最终的最优解,就是得显示出最优解的摸样,本来想通过做标记的方式,把DP的路径记录下来,后来感觉很麻烦,于是又加了一个bestStr[][]数组,元素类型是string,把每一个状态的形态记录了下来,bestStr[0][n-1]即是最优解,但是这样够早的话,可能附加操作比较多,因为每次都涉及很多字符串衔接的操作,导致最终居然超时。。。有时间,换一个方法实现以下好了,不用记忆搜索,换成循环递归实现以下,看看是否能摆 阅读全文
posted @ 2011-10-16 23:47 geeker 阅读(776) 评论(1) 推荐(1) 编辑
摘要: http://poj.org/problem?id=1988看黑书看到并查集,练了一道并查集的题目,很典型,不是很难,但是细节上的处理还是比较容易出错的。理解题意之后,首先对状态进行建模。分别建立三个数组,意义如下int father[i];//记录 i 的父亲节点,注意不一定是根节点,路径压缩之后才一定是根节点int total[i];//记录集合中元素个数,仅当i为根节点该值才有意义int deep[i];//每棵树距离父亲的距离,注意不是根树,所以每次进行路径压缩压缩的时候,将原父亲改为根节点时不要忘记将深度值也同时进行修改如果输入为Mi j 那么就调用合并函数unin(i,j)如果输入 阅读全文
posted @ 2011-10-16 01:26 geeker 阅读(225) 评论(0) 推荐(0) 编辑