算法
文章平均质量分 84
姚灯灯
programonkey
展开
-
一个简单的动态规划问题
题目来源于POJ,是一道非常基础的动态规划题目。但是却耗费了我非常多的时间,时间复杂度也从N的三次方,降到N的平方,最后优化到0(n)才最终得以通过。 题目如下: 要求其实非常简单,已知给你a1,a2....an,总共n个数,要求你从中抽取出两个连续的子序列,当然,如题意所示,两个序列连续在一起也是OK的,然后将其中最大的序列和输出即可。 看到题目,第一想法非常简单,从n个数中选择一个数原创 2014-12-17 15:16:54 · 1104 阅读 · 0 评论 -
并查集间单个节点的转移(UVa 11987 Almost Union-Find)
从来没有这么艰难地完成一道算法题过!经过8次失败之后总算提交成功了!所以决定写一篇博文,对并查集的相关内容做一些总结。 普通并查集的操作无非是两种,find_set(x)即找到节点x所在的集合的代表节点,或者是union_set(x,y),即将x和y所在的两个集合合并起来。如下图所示,有左右两个并集 通常,我们会选用并查集中父节点为自己的元素作为这个并查集的代表,例如图中的节点a和节点e。那么原创 2014-12-24 21:17:24 · 820 阅读 · 0 评论 -
DP_背包专辑
这短时间看了论文《背包九讲》,看到背包问题解法中的优美之处也看到背包问题在现实中的应用,总结出一句话:背包问题值得一看。 背包问题可以概括为这样的模型:有若干种选择,每种选择有一定的代价和价值,做某些选择会得到特定的状态,问我们在约定的条件下怎么得到特定的状态?这里的状态可以是代价和或者价值和或者由其他这两者组合而来的状态。这类问题需要枚举每种状态,但是可以通过动态规划减少枚举的次数转载 2015-02-06 21:35:17 · 659 阅读 · 0 评论