
动态规划
文章平均质量分 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 · 332 阅读 · 0 评论 -
最长上升子序列O(nlogn)算法模板
#include#include#includeusing 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 · 687 阅读 · 0 评论 -
poj1088 Ski
链接:http://poj.org/problem?id=1088这个题还不错,值得学习一下。运用记忆搜索这么一种方法,不大懂。也是动态规划吧。 #includeint 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 · 472 阅读 · 0 评论 -
poj1836 Alignment
链接:http://poj.org/problem?id=1836看了讨论自己写的。也算是完完全全自己搞清楚了一个题。题目要求,一队士兵,要求去掉其中的几名,使剩下的人成一个正的三角形的形状(特殊情况:1 2 5 5 5 2 1,这样也是符合题意的),这样任意一个士兵都能看见他的最远的左右两端。要求编程输出最少需要去掉的士兵数。方法:用LIS对士兵的身高分别从左向右和从右向左求最长上升原创 2014-03-09 19:37:15 · 405 阅读 · 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 · 381 阅读 · 0 评论 -
poj1050 To the Max
链接:http://poj.org/problem?id=1050还是看别人的解题报告才能写。确实没有好的想法自己根本做不出来。那就来看看别人是怎么想到。关键是将二维的矩阵转化为一维的数列,从而转化为求最大子序列和的问题。如何转化:将数列第i行起至第j行的每个相同列相加。然后求子序列和中最大的那个。#include#include#include#define MA原创 2014-03-09 18:56:19 · 430 阅读 · 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 · 387 阅读 · 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 · 362 阅读 · 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]|<=1000int lt[MAXV],rt[MAXV],a[MAXV],rtm[MAX原创 2014-03-07 14:40:36 · 411 阅读 · 0 评论 -
poj2479 Maximum sum
链接:http://poj.org/problem?id=2479第一次自己做动态规划的题目,带着模模糊糊的理解,写了几次代码,提交几次都没过。无奈只好看解题报告。看了解题报告才发现自己的思路完全不对头,也难怪,毕竟是第一次做动态规划的题,还不知道套路。认真看看这个题,虽然很简单,但毕竟是很标准的动态规划的题。代码全是copy来的出处:http://blog.youkuaiyun.com/wang原创 2014-03-07 14:26:46 · 421 阅读 · 0 评论 -
poj1159 Palindrome
链接:http://poj.org/problem?id=1159题意:已知一个串,求至少插入几个字符,使得该串成为回文串。一开始自己瞎搞了一通,几经周折,还是WA。然后就看discuss了。说说思路吧(当然是看人家的)。此题的本质:假设原串为S,求其与逆序串S'的最长公共子序列,然后再用原串的长度n-最大长公共子序列长度此即为所求最少需要添加到字符的个数。这个题还有一个地方要原创 2014-03-12 19:08:04 · 387 阅读 · 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 · 303 阅读 · 0 评论 -
动态规划解最长公共子序列问题
动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。【问题】 求两字符序列的最长公共字符子序列转载 2014-03-11 14:55:22 · 348 阅读 · 0 评论