
ACM_动态规划
文章平均质量分 77
runninghui
这个作者很懒,什么都没留下…
展开
-
很特别的一个动态规划入门教程
今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下~~~(说明一下,本人非常痛恨教材公式定理漫天飞,实际的讲解却讲得非常枯涩难懂,这种中国式的教育已经延绵了几千年了,现在中国的教材还是这个样子,讲清楚些明白些就那么难么?高中有个老师讲的一句话一直觉得很有道理:“教得会天才不是真本事,能把博士生的东西讲到小学生都会用那才是真水平。”转载 2013-03-29 18:44:57 · 2944 阅读 · 2 评论 -
RMQ问题
RMQ(range minimum/maximum query)即查询区间最大最小值。对于求区间最大最小值,我们自然而然就想到了一个O(n)时间复杂度的算法,但是如果询问有很多呢?这样必然超时。当然我们可以用线段树来解,使得每一次查询的时间降到log(n),但是对于RMQ算法,只要我们做了些预处理,之后的查询我们仅需要O(1)的时间。Sparse_Table算法是解决RMQ问题的一类原创 2013-05-17 08:39:05 · 2036 阅读 · 0 评论 -
最长递增子序列
个人觉得写得比较好的,比较完整的。问题给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4. 解法1:最长公共子序列法这个问题可以转换为最长公共子序列问题。如例子中的数组A{5,6, 7, 1, 2, 8},则我们转载 2013-04-14 15:29:43 · 826 阅读 · 0 评论 -
lcs 最长公共子序列 O(nlogn)算法
最长公共子序列问题:给定2个字符串,求其最长公共子串。如abcde和dbada的最长公共字串为bd。动态规划:dp[i][j]表示A串前i个和B串前j个的最长公共子串的长度。则若A[i] == B[j] , dp[i][j] = dp[i-1][j-1] + 1;否则 dp[i][j] = max(dp[i-1][j],dp[i][j-1]);时间复杂度O(N*M)。d转载 2013-05-12 18:27:03 · 1363 阅读 · 0 评论 -
背包问题合集
看了一天的背包问题,也想了很多,下面决定对0-1背包,完全背包,多重背包做个总结。一.0-1背包定义:何谓0-1背包,可以这样想,那里有一堆值钱的东西,每一样东西只有一件,他们的价值和体积都不一样,现在要你从这n件里面挑选一些放到一个容量一定的背包里面,使得你的背包里的东西总价值最大。对于这些东西的每一件,你可以选择放进你的背包或者是不放进去。(这里放与不放就对应着两种状态0,1),所原创 2013-05-23 22:50:39 · 1675 阅读 · 0 评论