![](https://img-blog.csdnimg.cn/20190928000642105.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
----动态规划
syrdbt
这个作者很懒,什么都没留下…
展开
-
Poj 1159 Palindrome
题意:给你一个字符串,问最少加多少个字符可以使之成为回文串。思路:把字符串倒置, 求最长公共子序列, 字符长度 减最长公共子序列长度就是 结果。 注意: 卡内存, 需要用 01 数组。代码:#include<stdio.h>#include<string.h>int dp[2][5010]; // 01 数组, 节约内存in...原创 2017-09-13 18:18:01 · 258 阅读 · 0 评论 -
Dp - 51NOD - 1051 最大子矩阵和
题目传送门:题目链接题目描述: 一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。 例如:3*3的矩阵: -1 3 -1 2 -1 3 -3 1 2 和最大的子矩阵是: 3 -1 -1 3 1 2 Input ...原创 2018-04-26 13:27:37 · 232 阅读 · 0 评论 -
Dp - 51NOD - 1183 编辑距离
题目传送门:题目链接题目描述: 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一字转成sitting: sitten (k->s) sittin (e->i) ...原创 2017-11-07 22:02:15 · 233 阅读 · 0 评论 -
1134 最长递增子序列 (动态规划)
给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的)例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。Input第1行:1个数N,N为序列的长度(2<=N<=50000)第2-N+1行:每行1个数,对应序列的元素(-10^9<=S[i]<=10^9)Outpu...原创 2017-11-04 19:13:17 · 328 阅读 · 0 评论 -
Poj 2392 Space Elevator (贪心 + 动态规划)
Space ElevatorTime Limit:1000MS Memory Limit:65536K Total Submissions:12308 Accepted:5854 DescriptionThe cows are going to space! They plan to achieve orbit by buildi...原创 2017-10-15 10:50:43 · 291 阅读 · 0 评论 -
hdu 4545: 魔法串 (动态规划)
题目描述: Problem Description 小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转换使小明的串和小西的变成同一个,那么他们两个人都会很开心。这里魔法指的是小明的串可以任意删掉某个字符,或者把某些字符对照字符变化表变化。如: 小西的串是 abba; ...原创 2017-10-11 23:21:26 · 350 阅读 · 0 评论 -
Poj 1742 : Coins (多重背包)
题目描述: Coins Time Limit:3000MS Memory Limit:30000K Total Submissions:44946 ...原创 2017-09-28 20:23:01 · 352 阅读 · 0 评论 -
Milking Time POJ - 3616
题意: 总共 N 小时 , M 个产奶时段, 每次产奶后需要休息 R 小时。 给你 M 组数据, 每组数据 包括 :时段的开始时间点, 结束时间点, 时间段产奶量。思路:将所有时间段 按 结束时间点 从小到大 排序。 dp[i] 是以 第 i 个时间段结束时的最大产奶量 (排序后),有点像最大序列和,不过需要考虑两个时间的休息时段,即 j 时间段 发...原创 2017-09-26 22:03:18 · 242 阅读 · 0 评论 -
Poj 1260 Pearls
题意:有一些珍珠,给你珍珠的数量价格,你需要买下所有的珍珠,购买的方法买一种珍珠,设珍珠数量n 、价格 p,则须支付(n+10)*p 元。具体例子如下:For example 5 pearls are needed in the 10 Euro category and 100 pearls are needed in the 20 Euro category. That will no...原创 2017-09-09 13:19:24 · 215 阅读 · 0 评论 -
Apple Catching POJ - 2385
题意:有两个树(树1, 树2),每分钟其中一棵树就会掉落一个苹果,会掉下来 T 个(1分钟掉下1个),你可以有 W 次机会选择站在那个树下,开始没在任何树下。思路:dp[i][j][2] 意味着前i 个 苹果落下, 前 j 次移动 的 最大值(i <= T, j <= W); dp[i][j][0] = max(dp[i-1][j][0], d...原创 2017-09-26 13:09:07 · 252 阅读 · 0 评论 -
Poj 3176 Cow Bowling
这道题题意很简单,直接说思路吧。可以Dp、递推,递推容易理解,时间复杂度低,递推优于Dp。先讲一下Dp:开一个dp[ ][ ] 数组, dp[i][j] 意味着牛走到第 i 行 , 第 j 个点的最优值。从第一行开始分别取每个点的最优值,每个点的值都不为负, 所以列出下式:dp[i][j] = max(dp[i-1][j-1] + m[i][j], dp[i-1][j...原创 2017-09-13 18:04:52 · 178 阅读 · 0 评论 -
最长上升子序列
最长上升子序列:给你一个数列,你可以从从中选一些数字,要求这些数字是递增的,问你选出的递增数列最大长度。 思路:开一个数组,如dp[n], n 是这个数列的长度, dp[i]的意思是以数列中第i个数字结尾的最长上升子序列。 手动模拟一下: 给你一个数列 a ={1 ,3 ,4, 2 } 长度为4 , 假设下标从1开始,便于理解。 ...原创 2017-08-30 15:56:17 · 159 阅读 · 0 评论 -
POJ 1276 Cash Machine
题目大意:给你一个最大金额和一些纸币让你从这些纸币中挑选任意张,问不超过最大金额的总金额(所有纸币面额之和)。思路:不断枚举各种纸币,记录符合条件的总金额情况,更新最大值。参考代码如下:#include<stdio.h>#include<string.h>int dp[100100], num[1001000], v[100100];// dp[] 记录...原创 2017-08-29 16:00:11 · 183 阅读 · 0 评论 -
POJ 1837 Balance
题目大意: 一个天平,给你一些挂钩(固定的),砝码,要求砝码全用,挂钩可以只用一些,砝码在天平上的效果等于挂钩距离中心点的距离与砝码重量的乘积。Input:2 4 -2 3 3 4 5 8输入样例分析:第一行:2 代表挂钩数量 4 代表砝码数量第二行:挂钩与中心点的距离(负的代表在中心点左边,正的当然是右边)第三行: 砝码的重量解题思路:因为砝码需要全用,所以...原创 2017-08-29 14:11:17 · 276 阅读 · 0 评论 -
Dp基础 简单背包问题
背包问题大意:给你一个背包有一定的容量,再给你一下些物品,物品有自己的体积和价值,请你选择价值和最大的一些物品(最体积不超过背包的容量)背包问题思路:逐渐放每一个物品,找到当前体积的最大价值。 背包问题的主要代码 for(i=1;i<=n;i++) //逐渐放一个物品 for(j=m;j>=w[i];j--) ...原创 2017-08-29 10:04:03 · 629 阅读 · 0 评论 -
Dp 基础: 最长公共子序列
最长公共子序列是一个最基础的Dp,要想搞懂他可以手动模拟一下,很有效。 下面用一个maxlen的二维数组来记录我们的比较情况, maxlen[i][j]记录的就是两个字符串 s1的前 i个字符与s2前 j 个字符的最长公共子序列; 下面介绍下最重要的两个步骤: if(s1[i] == s2[j]) maxlen[i][j] =...原创 2017-08-27 16:19:30 · 313 阅读 · 0 评论 -
2945:拦截导弹(最长降序子序列)
描述 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。 输入 输入有两...原创 2019-05-16 20:54:05 · 444 阅读 · 0 评论