动态规划(dp)
文章平均质量分 74
我爱AI_AI爱我
不爱
展开
-
动态规划基础讲
动态规划是可以利用最优子结构,自底至上的解决问题的方法。它更多是一种思路,而不是一一种模板。解题的关键为 如何构造子结构,状态方程一般空间较大,可以利用滚动数组,解决一部分的空间问题算法实现上一般有记忆化搜素(dfs)与递推两种递推需要注意边界值的处理原创 2016-04-08 15:04:10 · 228 阅读 · 0 评论 -
dp基础习题(4.7)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=22149题意:在ktv唱歌的时候,如果已经到时间了,是可以唱完最后一首的。ktv中一定有一首叫《劲歌金曲》的歌时长678s。且保证没有歌是比它长的。求在总曲数尽量多得前提下,唱歌的时间尽量长思路:首先我们可以确定,一定要唱劲歌金曲。这就意味着其他的歌最多只能唱t - 1原创 2016-04-08 15:10:26 · 303 阅读 · 0 评论 -
最长下降子序列 + 最长的方案数
链接:http://exam.upc.edu.cn/problem.php?id=1824题意:求最长下降子序列的长度,和该长度的最长下降子序列有多少个思路:o(n^2)求最长下降子序列,统计个数时两个状态转移方程一是统计个数的通用方程:if(a[i] 另一个是如果当前点和之前的点是相等的,且dp[i] == dp[j]那么当前点的所有情况中一定是包括了之前点的方案数,大于原创 2016-08-13 13:49:22 · 2476 阅读 · 0 评论 -
动态规划刷表法
一.先简单讲下什么是填表法,什么是刷表法。填表法 :就是一般的动态规划,当前点的状态,可以直接用状态方程,根据之前点的状态推导出来。刷表法:由当前点的状态,更新其他点的状态。需要注意:只用当每个状态所依赖的状态对它的影响相互独立。二.通过例题看刷表链接:http://exam.upc.edu.cn/problem.php?id=2383题意:三个数,T表示最大的饱腹值,A表示吃原创 2016-08-13 12:57:49 · 7146 阅读 · 1 评论 -
拓扑图+ dp
题目:J: Meeting Time时间限制: 1 Sec 内存限制: 64 MB提交: 10 解决: 5[提交][状态][讨论版]题目描述Bessie and her sister Elsie want to travel from the barn to their favorite field, such that they leave at exactly th原创 2016-08-22 16:28:29 · 1161 阅读 · 0 评论 -
最大子序列和(dp+ rmq/队列)
http://exam.upc.edu.cn/problem.php?id=1552题意:长度为n的数组,再加一限制条件m。求长度最大为m的连续子序列和是多少。m是个正整数分析:我们都知道如果没有限制条件,求最大连续子序列的和只需用方程:dp[i] = max(0,dp[i - 1] + a[i])即可。复杂度O(n)此题加上了限制,此时可将dp方程改为:dp[i] =sum[原创 2016-08-08 16:07:01 · 351 阅读 · 0 评论 -
dp(记忆化搜索) + 概率论(全概率)
http://acm.hust.edu.cn/vjudge/problem/51198题意:多组数据,n = 9,m = 4。相当于n堆纸牌,m = 4位每堆纸牌的最上面。每次从所有纸牌的最上面,取前一个字符相当的两张牌,求最后都能取完的概率是多少。解析:直接暴搜,如果都是相等的,那就相当于是暴搜2^36次,肯定是不对的。记录所有纸牌,每堆纸牌的个数,作为状态。当前状态dp[i]等于所有子原创 2016-08-17 16:10:13 · 435 阅读 · 0 评论 -
利用dp计算方案数(hdu 5763 ( Another Meaning ) )
dp的特点与数学归纳法近似,都是已知当前点推导下一个点。很多时候dp 都会被用在统计个数上。即在现有的元素中再加上新的元素后个数是如何变化的原创 2016-07-29 21:05:01 · 717 阅读 · 0 评论 -
简单?dp
链接http://www.luogu.org/problem/show?pid=1140题意:给你两个基因,每个基因可以两两对应,也可以一个对应空。不同的对应会得到不同的数字,求最大的对应和是多少解析:dp。三个dp转移方程1.dp[i][j] = dp[i - 1][j - 1] + match(a[i],b[j])注意此处不是max。2.dp[i][j] = max(dp[i]原创 2016-08-16 19:35:15 · 174 阅读 · 0 评论 -
神奇的贪心 + DP
国际惯例http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1163题意:简单的活动安排(区间贪心问题),对每一段加上了一个权值,问权值的最大和分析:此题想了很久,方向基本正确了,但是最后的dp没有想到,放弃了。。。(题外话,看来很多时候,都能想到正确的方向,最后却总是放弃了,以后应该多坚持一下,原创 2016-06-18 20:59:21 · 559 阅读 · 0 评论 -
dp初步硬币选择的方法数目
http://www.cnblogs.com/scau20110726/archive/2012/12/25/2832968.htmlDP(DAG上的DP)题意:给你一个目标金额n,有5种硬币50,25,10,5,1,每种硬币无限个,用这些硬币构成这个目标金额n,有多少种不同的构建方法看做一个有向图处理:好像11能减去5得到6,那么有向边11--->6,同样11减10可以得到1,那么有转载 2016-03-17 11:13:55 · 767 阅读 · 0 评论 -
DP(比基础稍难练习?)
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=3565&cid=1761题意:共有三种水果,每种水果都有一定的数量Ni,每种水果都不能连续Di天出现。问有多少种组合方式?T组数据,每组数据6个数依次是三种水果的数量,和三种水果不能连续出现的天数 分析:首先需要明确这是动态规划。且是五维的,前三维为各个水果的已经使用的数量,第四维原创 2016-06-14 22:48:06 · 934 阅读 · 0 评论 -
动态规划(初步习题) (为什么用到了动态规划)
国际惯例:http://codevs.cn/problem/1219/题意:给你一个n * m大小的棋盘,一个起点,一个终点。你利用一个马开始走,马只能走日,而且只能向右走。那么问题来了,一共有多少种走法。(50*50)分析:无脑dfs超时。优化后依旧超时。因为是一个空棋盘,dfs的本质是对所有方案进行枚举。虽然n和m都很小,但是当使用/*50 50 1 25 40 25*/这组数据时原创 2016-06-17 12:08:52 · 338 阅读 · 0 评论 -
动态规划开始的开始(为什么要用一个数组而不是两个)
国际惯例http://acm.nyist.net/JudgeOnline/problem.php?pid=49题意:T组数据,每组第一行两个数分别是最多能花的钱数,和要买的物品的个数n,接下来n行是每种物品的价钱和重要程度。求最这个钱数下,最多能达到的价钱和重要程度乘积和的最大值分析:很简单的以第几个物品为第一层,以钱数为第二层。按照记忆中进行两层dp,并开辟一个二维数组。却出现错误原创 2016-06-16 17:32:28 · 946 阅读 · 0 评论 -
dp基础习题(4.11)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34398题意:将一个单词划分为几个回文串使得回文串的数量尽量少思路:预处理,确定s[i ] - s[j]是否为回文串。dp[i]表示的是从0到i的字符串最少回文串的个数,将dp[i]初始化为 i + 1代表每个回文串的长度都为1时回文串的个数。然后进行状态转移:dp[i原创 2016-04-11 10:51:44 · 313 阅读 · 0 评论 -
dp经典模型
1.最长上升子序列什么是最长上升子序列?就是从一排数据中,按顺序(不必连续)的选出最长的上升序列用dp[i]表示以i为结尾的最长上升子序列。状态方程dp[i] = max(dp[j] , 0) + 1j满足小于i例题:原创 2016-04-08 15:39:04 · 1602 阅读 · 0 评论 -
dp基础习题(4.13)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51186题意:每组两个字符串,从这两个字符串中的任意一个每次取出一个字符放在产生的新的字符串的尾部。每个字母第一次出现和最后一次出现的位置之差,为其sum值。求所有字符最小的sum值是多少。思路:原创 2016-04-13 08:19:52 · 326 阅读 · 0 评论