![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划入门
蛋淡的忧伤
小xuo生
展开
-
动态规划的简单例题(2)
上一篇:动态规划的简单例题(1) 题目: D点有一个过河卒,需要走到目标B点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如下图的C点),该马所在的点和所有跳跃一步可达的点称为对方马 的控制点,例如下图的C点上的马可以控制9个点(图中的P1,P2,……P8和C),卒不能通过对方马的控制点。 棋盘用坐标表示,A点(0,0)、B点(n,m)C点(Cx,Cy)(0<C...原创 2019-01-28 13:11:10 · 502 阅读 · 0 评论 -
洛谷 P1616 疯狂的采药
题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同种类的草药,采每一种都需要一些时间,每一种也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最...原创 2019-05-15 22:13:34 · 76 阅读 · 0 评论 -
洛谷 P1049 装箱问题
题目描述 有一个箱子容量为VV(正整数,0 \le V \le 200000≤V≤20000),同时有nn个物品(0<n \le 300<n≤30,每个物品有一个体积(正整数)。 要求nn个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 输入输出格式 输入格式: 11个整数,表示箱子容量 11个整数,表示有nn个物品 接下来nn行,分别表示这nn个物品的各自体...原创 2019-05-15 20:46:30 · 156 阅读 · 0 评论 -
洛谷 P1048 采药
题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你是...原创 2019-05-15 20:15:51 · 124 阅读 · 0 评论 -
洛谷 P1164 小A点菜
题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种。 uim指着墙上的价目表(太低级了没有菜单),说:“随便点”。 题目描述 不过uim由于买了一些辅(e)辅(ro)书,口袋里只剩MM元(M \le 10000)(M≤10000)。 餐馆虽低端,但是菜品种类不少,有NN种(N \le 100)(N≤100),第ii种卖a_iai元(a_i ...原创 2019-05-15 19:04:03 · 96 阅读 · 0 评论 -
洛谷 P1060 开心的金明(动态规划)
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的NN元。于是,他把每件物品规定了一个重要度,分为55等:用整数1-51−5表示,第55等最重要。他还从因特网上查到了每件物品的价格...原创 2019-05-15 15:58:11 · 176 阅读 · 0 评论 -
LIS--最长上升子序列
最长上升子序列,又称LIS,是动态规划的一个经典应用。 在原序列取任意多项,不改变它们在原来数列的先后次序,得到的序列称为原序列的子序列。最长上升子序列,就是给定序列的一个最长的、数值从低到高的子序列,最长上升子序列不一定是唯一的。 输入样例: 8 2 1 5 3 6 4 6 3 输出样例: 4 解释:它的最长上升子序列为1,3,4,6和2,3,4,6,长度均为4 ...原创 2019-05-14 10:13:49 · 159 阅读 · 0 评论 -
多重背包动态规划及空间优化
题目描述: 有n种物品,第 i 种物品的价值是vai,体积时voi,个每种物品的数量是有限的,为cnti 现有容量为w的背包,请你放入若干物品,爱总体积不超过w的条件下,使总价值尽可能大 解题思路: 可以按01背包问题的思路解决,其实01背包问题就是特殊情况下的多重背包 可以每次把cnti个物品逐个拆分,转化为01背包 状态转移方程为: dp[i][j] = max( dp[i...原创 2019-02-12 13:09:37 · 199 阅读 · 0 评论 -
01背包动态规划空间优化
问题描述: 给定 n 种物品和一个容量为 w 的背包,物品 i 的价值是 vai,其体积为 voi。 问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大? 解题思路: 状态转移方程为: dp[i][j] = dp[i-1][j] j < vo[i] (即...原创 2019-02-12 11:35:28 · 210 阅读 · 0 评论 -
求最长公共子串
求最长公共子串的长度 如 dcabceh 和 abcedhf 的最长公共子串为abce,长度为4 状态转移方程为: #include<iostream> #include<string.h> #include<algorithm> using namespace std; int m...原创 2019-02-09 14:45:57 · 145 阅读 · 0 评论 -
LCS---最长公共子序列
求最长公共子序列的长度 如abcfbc和abfcab的最长公共子序列为:abfb,长度为4 将S1的前 i 个字符与S2的前 j 个字符的最长公共子序列长度记为lcs[i][j] 状态转移方程为: #include<iostream> #include<string> #include<algorithm> using namespace...原创 2019-02-09 13:53:25 · 123 阅读 · 0 评论 -
动态规划的简单例题(1)
下一篇:动态规划的简单例题(2) 题目: 蒜头君要回家,如图所示,蒜头君在左下角位置,家在右上角位置。蒜头君走上一个格子会花费一定的体力(每个格子上的数字表示蒜头君要花费的体力值)。每一步蒜头君只能走到上面或右面的与当前相邻的一个格子。蒜头君想知道他回到家需要花费的最少体力值是多少? 解题思路: 蒜头君只能走到上面或右面的与当前相邻的一个格子,所以到家的前一步只有两种情况:...原创 2019-01-28 14:09:38 · 1815 阅读 · 0 评论 -
最长上升子串
给定一个数组求其最长上升子串 输入样例: 6 3 2 4 5 3 6 输出样例: 3 解释:子串区别于子序列,子序列不要求连续,子串要求连续 #include<cstdio> #include<algorithm> using namespace std; int dp[100]; int main() { int n,list[100],ans=...原创 2019-05-16 20:41:03 · 2345 阅读 · 0 评论