![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 74
_Ngone
这个作者很懒,什么都没留下…
展开
-
poj3176 Cow Bowling
链接:http://poj.org/problem?id=3176 这个题好像是在ppt不知教材上面的一个例题。额,当然是最水的那种了。 简单的递推公式就OK了。 写的过程发现一个问题,自己定义的max(a,b)函数,只能返回一个值,而不能再进行运算。 什么意思呢?来看一下代码。 res[i][j]=trg[i][j]+max(res[i+1][j],res[i+1][j+1]);//这原创 2014-03-11 15:40:14 · 315 阅读 · 0 评论 -
最长上升子序列O(nlogn)算法模板
#include #include #include using namespace std; int a[]={1,2,4,3,9,6}; int b[7],dp[6]; int bsearch(int b[],int n,int v) { int low=1; int high=n; while(low<=high) { int mid=(lo原创 2014-05-29 09:03:52 · 663 阅读 · 0 评论 -
poj1088 Ski
链接:http://poj.org/problem?id=1088 这个题还不错,值得学习一下。运用记忆搜索这么一种方法,不大懂。也是动态规划吧。 #include int map[105][105]; int dp[105][105]; int r,c; int fun(int i,int j) { int max=0,temp; if(dp[i][j]>0)原创 2014-03-19 19:35:44 · 445 阅读 · 0 评论 -
poj1836 Alignment
链接:http://poj.org/problem?id=1836 看了讨论自己写的。也算是完完全全自己搞清楚了一个题。 题目要求,一队士兵,要求去掉其中的几名,使剩下的人成一个正的三角形的形状(特殊情况:1 2 5 5 5 2 1,这样也是符合题意的),这样任意一个士兵都能看见他的最远的左右两端。要求编程输出最少需要去掉的士兵数。 方法:用LIS对士兵的身高分别从左向右和从右向左求最长上升原创 2014-03-09 19:37:15 · 377 阅读 · 0 评论 -
poj1260 Pearls
链接:http://poj.org/problem?id=1260 呵呵,我是大自然的搬运工。。。 又是看讨论的。自己根本不知道怎么写啊!!!还有,为觉得这个代码写的也很巧妙,自己写写好像也写不出来。还是要多学习啊,从模仿做起吧。 不知何时才能自己写个DP啊。。泪崩 f[i] = min{f[k] + (a[k+1] + a[k+2] ... +a[i] + 10) * p[i];原创 2014-03-09 20:56:49 · 358 阅读 · 0 评论 -
poj1050 To the Max
链接:http://poj.org/problem?id=1050 还是看别人的解题报告才能写。确实没有好的想法自己根本做不出来。那就来看看别人是怎么想到。 关键是将二维的矩阵转化为一维的数列,从而转化为求最大子序列和的问题。 如何转化:将数列第i行起至第j行的每个相同列相加。 然后求子序列和中最大的那个。 #include #include #include #define MA原创 2014-03-09 18:56:19 · 407 阅读 · 0 评论 -
poj2533 Longest Ordered Subsequence
链接:http://poj.org/problem?id=2533 用动态规划方法求序列的最长上升子序列(LIS)。相当于是一个模板了。 /***** 最长上升/不下降子序列 *****/ /***** Longest Increasing Subsequence ******/ /***** LIS *****/ #include #include #define MAXN 101原创 2014-03-09 18:47:50 · 358 阅读 · 0 评论 -
poj1837 Balance
链接:http://poj.org/problem?id=1837 这个题我转载一下网上某位同学的分析。下面内容均转自:優YoU http://user.qzone.qq.com/289065406/blog/1299341345 提示:动态规划,01背包 初看此题第一个冲动就是穷举。。。。不过再细想肯定行不通= =O(20^20)等着超时吧。。。 我也是看了前辈的意见才联想到01原创 2014-03-07 22:20:54 · 330 阅读 · 0 评论 -
poj2593 Max Sequence
链接:http://poj.org/problem?id=2593 这个题和poj2479是一模一样的,看2479的解析吧。 #include #define max(a,b) a>b?a:b #define MAXV 100010 #define inf -1010 //|a[i]|<=1000 int lt[MAXV],rt[MAXV],a[MAXV],rtm[MAX原创 2014-03-07 14:40:36 · 388 阅读 · 0 评论 -
poj2479 Maximum sum
链接:http://poj.org/problem?id=2479 第一次自己做动态规划的题目,带着模模糊糊的理解,写了几次代码,提交几次都没过。无奈只好看解题报告。 看了解题报告才发现自己的思路完全不对头,也难怪,毕竟是第一次做动态规划的题,还不知道套路。 认真看看这个题,虽然很简单,但毕竟是很标准的动态规划的题。代码全是copy来的出处:http://blog.csdn.net/wang原创 2014-03-07 14:26:46 · 395 阅读 · 0 评论 -
poj1159 Palindrome
链接:http://poj.org/problem?id=1159 题意:已知一个串,求至少插入几个字符,使得该串成为回文串。 一开始自己瞎搞了一通,几经周折,还是WA。然后就看discuss了。 说说思路吧(当然是看人家的)。此题的本质:假设原串为S,求其与逆序串S'的最长公共子序列,然后再用原串的长度n-最大长公共子序列长度 此即为所求最少需要添加到字符的个数。 这个题还有一个地方要原创 2014-03-12 19:08:04 · 361 阅读 · 0 评论 -
poj1080 Human Gene Functions
链接:http://poj.org/problem?id=1080 唉,这个题我就不用多说什么了,还是照抄别人的咯。 用C交老是CE,不知道为什么。用C++交才过的。 把一个j写成了i,找了好久。。。真是抄也会抄错。。 不说了,还是在学习别人的,把大神的思路贴一下吧。 出处:優YoU http://user.qzone.qq.com/289065406/blog/1300550378原创 2014-03-12 21:33:31 · 280 阅读 · 0 评论 -
动态规划解最长公共子序列问题
动态规划法 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。 为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。 【问题】 求两字符序列的最长公共字符子序列转载 2014-03-11 14:55:22 · 325 阅读 · 0 评论