动态规划
onthewaytotop
每天一道搜索题有益身心健康~
展开
-
动态规划之划分动态规划:矩阵链乘 poj 1651 Multiplication Puzzle
题意:给你n个数,进行如下操作,问最小值 For example, if cards in the row contain numbers 10 1 50 20 5, player might take a card with 1, then 20 and 50, scoring 10*1*50 + 50*20*5 + 10*50*5 = 500+5000+25原创 2016-07-26 20:35:48 · 188 阅读 · 0 评论 -
hdu 1421 搬寝室
题意: 给定n个物品,每个物品有重量, 从中选出m对,使得这m对物品重量差的平方和最小。 疲劳度:m对物品重量差的平方和分析:先对n中物品的重量排序 令dp[i][j]表示前i个物品中选j对的最小疲劳度。 则dp[i][j]可能含有第i个物品(这种情况下,第i种物品一定是和第i-1个物品配对), 则dp[i][j]=dp[i-2][j-1]+(转载 2016-07-20 10:12:23 · 158 阅读 · 0 评论 -
hdu 1159 Common Subsequence(最长公共子序列问题)
Sample Inputabcfbc abfcabprogramming contest abcd mnp Sample Output420#include#include#include#includeusing namespace std;int dp[1005][1005];char s[1000],t[1000];in转载 2016-07-19 20:44:51 · 213 阅读 · 0 评论 -
HDU 1024 Max Sum Plus Plus
题意:给定由 n个整数(可能为负整数)组成的序列a1,a2,a3,……,an,以及一个正整数 m,要求确定序列 a1,a2,a3,……,an的 m个不相交子段,使这m个子段的总和达到最大,求出最大和。分析:动态规划的思想。1.基本思路: 首先,定义数组num[n],dp[m][n]. num[n]用来存储n个整数组成的序列. dp[i][j]用来表示由前 j项得到的含i个字段转载 2016-07-19 20:22:58 · 179 阅读 · 0 评论 -
HDU 1506 Largest Rectangle in a Histogram(最大连续矩阵面积)
Sample Input7 2 1 4 5 1 3 34 1000 1000 1000 10000 Sample Output84000分析:我们要求最大矩形面积,那么我们应该求每个矩形向两边延伸的最大长度,最坏情况为0(n),必然TLE,那么我们可以应该DP的思想,用一个数组来保存一些结果。例如,dpl【i】表示从左边过来的最长,那么我们计算dp转载 2016-07-19 20:20:49 · 237 阅读 · 0 评论 -
HDU 1231最大连续子序列
Problem Description给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。 在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该转载 2016-07-19 20:18:32 · 329 阅读 · 0 评论 -
HDU 2955 Robberies(01背包)
题意:有一个小偷要偷银行的钱,可是他偷每家银行总是有一定的概率被抓,现在给了你一个概率P,只要他被抓的概率乘积不大与P,他就是安全的。问你在他安全的情况下,他最多可以偷多少钱。 分析:题目给我们的是被抓的概率,,而我们要求最大的逃跑率,需要去被抓的概率pi的补 ,即1-pi。只有逃跑率才会等于各个逃跑率之积,被抓的概率不会等于各个被抓的概率之积。 状态转移方程:dp[j]=max(dp转载 2016-07-19 16:56:25 · 159 阅读 · 0 评论 -
HDU 1864最大报销额(01背包)
题意:现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。分析:1.只有A,B,C三种物品可以报销,含有其他物品的发票作废;2.单样物品的价值不能超过600;3.每张发票总价值不能超转载 2016-07-19 17:01:44 · 242 阅读 · 0 评论 -
hdu 1257 最少拦截系统(动态规划)
Problem Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里原创 2016-07-27 16:54:08 · 266 阅读 · 0 评论 -
hdu 3466 Proud Merchants(贪心+01背包)
题意:给你n件物品,每件物品需要花费pi价钱,它的价值为vi,并且每件物品能不能被买取决于你手里的钱是否大于每件物品的qi,你有m数量的钱,问最多的价值分析:先按照q1-p1>q2-p2排序,然后01背包。大神说:就是让C商品的q不等于p,其他都相同,这时,你就会发现如果要买C商品的话,肯定得先买C商品,因为买C商品的代价最大。所以,我们可以按照qi-pi的顺序来确定大顺序。这里我们还可以转载 2016-07-27 13:41:02 · 240 阅读 · 0 评论 -
动态规划之前缀动态规划:poj 1458 Common Subsequence(最长公共子序列)
题意:给你两个字符串,求最长公共子序列分析:这题输入中间有任意空格,估计要cin和cout输入输出。还有,范围要开的够大。。【从1000改到1005才过的】 LCS 长度的递归方程C[i, j] = 0 if i=0 或 j=0C[i, j] = C[i-1, j-1] + 1 if i, j>0 且 x i = y jC[i, j] = Max(原创 2016-07-26 23:05:00 · 419 阅读 · 0 评论 -
动态规划之编号动态规划:hdu 1025(dp+二分 求最长上升子序列)
题意:有两个街道,一边都是贫困城市,一边都是富有城市,要在这两边之间建公路,且不能相交。求最多能建多少条公路。分析:dp+二分假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS长度为5。下面一步一步试着找出它。我们定义一个序列B,然后令 i = 1 to 9 逐个考察这个序列。此外,我们用一个变量Len来记录现在最长算到多少了首先,转载 2016-07-21 11:58:29 · 229 阅读 · 0 评论 -
石子合并【四边形不等式/区间dp/leetcode面试题】
本篇博文意在详细讲解如下内容F. 什么是四边形不等式S. 四边形不等式优化如何证明T. 怎么用四边形不等式优化(好气啊,这篇博文我写了两遍,第一遍的没有保存就关了) (感谢博客园的Staginner,他的博客对我有很大影响) (感谢wys大佬亲自为我查了一部分内容的错) (如果本文有什么错误的话,请向我提出,非常感谢) 这是他的博客: http://www.cnblogs.c...转载 2018-11-11 16:11:35 · 532 阅读 · 0 评论