DP
文章平均质量分 73
ophunter
不会DP!
展开
-
hdu4504威威猫系列故事——篮球梦(DP)
题目请戳这里题目大意:中文题,略。题目分析:其实就是求给k个数,每个数可以是1,2,或者3,求这k个数的和大于t 的方案数。dp[i][j]表示用j个数的和为i的方案数。那么很容易得到转移方程:dp[i][j] = dp[i - 1][j - 1] + dp[i - 2][j - 1] + dp[i - 3][j - 1]。即用j个数和为i的方案数为:(用j-1个数和为i-原创 2013-11-06 23:14:18 · 1406 阅读 · 2 评论 -
hdu1081To The Max(dp)
题目请戳这里题目大意:给一个n*n的矩阵,矩阵每个元素为一个整数,求权值和最大的子矩阵。题目分析:这是求最大连续子序列和的二维版本。所以我们可以先看看一维情况:求一个序列的最大连续子序列和。很显然可以朴素O(n^2)解决这个问题,但是如果我们利用前缀和的话,可以做到O(n)。dp[i]表示前i个数最大连续子序列。那么有方程:dp[i] = max(dp[i - 1] + a[i],a[原创 2014-01-19 17:25:33 · 1186 阅读 · 0 评论 -
uva10635 Prince and Princess(dp)
题目请戳这里题目大意:给2个序列,求最长公共子序列。题目分析:传统做法O(p*q),但此题p和q会很大,所以不能那样做。这题需要稍微转化一下,比较2个序列,将一个序列中的元素在另一个序列中出现的位置依次记录下来。对这个序列求一次LIS就可以了。hdu1025跟这个题其实是一个题。详情请见代码:#include #include#includeusing namespace原创 2014-01-19 20:34:16 · 1295 阅读 · 0 评论 -
uva10003Cutting Sticks(DP)
题目请戳这里题目大意:给一根木棍的长度l,再给n个数c1~cn,表示要在距木棍一端长ci处切一刀,切一刀的代价是当前所切木棍长度。求最小的总代价。题目分析:仔细一看这其实就是一个石子合并问题,只不过换了一个姿势,一个是合并,一个是切,本质还是一样的。我将这题转化成石子合并问题dp。木棍切n刀会产生n+1段,他的逆过程便是将n+1堆石子合并成一堆。dp[i][j]表示从第i段原创 2014-01-20 23:08:07 · 1180 阅读 · 0 评论