DP
迷麟Milin
There isn't time, so brief is life, for bickerings, apologies, heartburnings, callings to account. There is only time for loving, and but an instant, so to speak, for that. The good life is built with good relationships.
——Mark Twain
展开
-
王道机试 第十二章 动态规划 12.5 背包问题(0-1背包,完全背包,多重背包)
王道机试 第十二章 动态规划 12.5 背包问题1、0-1背包例题12.7 点菜问题(北京大学复试上机题)注意事项背包数组的范围——和容量C相关,定义maxm=C+5内层循环倒序原因:0-1背包问题的原始DP方程为dp[i][j]=max(dp[i−1][j],dp[i−1][j−w[i]+v[i]])dp[i][j] = max(dp[i - 1][j], dp[i - 1][j...原创 2020-03-08 12:06:29 · 191 阅读 · 0 评论 -
01背包的内循环逆序解析
背包九讲:01背包的内循环逆序问题 对于01背包,用二维数组做DP的情况如下:F[i,v]代表,在背包容量为v的情况下,从前i件物品中选出若干件(因背包容量的限制,可能不会所有i件都在里面,取最大值时背包里应该是权值相对较大的那些物品)所能得到的最大价值。第一句对dp...转载 2020-03-08 11:43:14 · 313 阅读 · 0 评论 -
王道机试 第十二章 动态规划 12.3 最长递增子序列(LIS) 12.4 最长公共子序列(LCS)
王道机试 第十二章 动态规划 12.3最长递增子序列(LIS)12.3 最长递增子序列(LIS)例题12.3 拦截导弹(北京大学复试上机题)动态规划解读设变量设dp[k]dp[k]dp[k]表示以aka_kak为结尾的子序列(可以不连续)的最大程度。(求什么设什么)递推方程对于每个iii (1≤i≤n1 \leq i \leq n1≤i≤n),考察其前方的导弹jjj(j≤ij \...原创 2020-03-06 20:23:15 · 149 阅读 · 0 评论 -
王道机试 第十二章 动态规划 12.2 最大连续子序列和
王道机试 第十二章 动态规划 12.2最大连续子序列和12.2 最大连续子序列和最大序列和(清华大学复试上机题)动态规划思路(1)第一步设变量,求什么设什么。题目希望求出以元素aja_{j}aj结尾的连续子序列{a1,a2,…,aja_1, a_2, \dots, a_ja1,a2,…,aj},使得这个连续子序列的和最大。则令dp[i]dp[i]dp[i](i≥1i \...原创 2020-03-05 17:36:17 · 163 阅读 · 0 评论 -
王道机试 第十二章 动态规划 12.1递推求解
王道机试 第十二章 动态规划 12.1递推求解12.1 递推求解例题12.1 N阶楼梯上楼问题(华中科技大学复试上机题)动态规划思路(1)第一步设变量,求什么设什么。题目希望求出到达NNN阶台阶的方案书,则令dp[i]表示到达第i阶台阶的所有方案数。(2)第二步推导递推方程。考察数列an(n≥1){a}_n(n \geq 1)an(n≥1)每一项的关系。由题意知,从...原创 2020-03-05 12:29:47 · 172 阅读 · 0 评论 -
动态规划——最长公共字串与最长公共子序列(LCS)
区别:最长公共字串:必须是连续的最长公共子序列:可以不连续存在于字符串中对于两个字符串x与y,DP方程如下:最长公共字串:核心要点:1.dp初始值的确定 2.讨论x[i] == y[i]与否dp(i, j) = 0, if i==0 || j== 0 || x[i] != y[i]dp(i, j) = 1 + dp(i - 1 + j - 1) ...原创 2019-03-27 21:28:08 · 144 阅读 · 0 评论 -
hdu 1087 Super Jumping! Jumping! Jumping!(动态规划DP)
题目描述给定长度为n的正整数序列a1,a2,…,an。求一个递增的子序列,和最大。思路:动态规划对于任意的 j < i => dp[i] = max(dp[i], dp[j] + a[i])C++代码如下:// 给定长度为n的正整数序列a1,a2,…,an。// 求一个递增的子序列,和最大。// 对于任意的 j < i =&g...原创 2019-06-20 20:14:29 · 118 阅读 · 0 评论 -
codevs 3641 上帝选人 线性DP
题目链接:http://codevs.cn/problem/3641/思路:由题意知,对于i和j两个人,IQ[i]>=IQ[j]时,必有EQ[i] >= EQ[j],否则出错算法:1. 对所有人按照IQ排序2. 求EQ的最长不降子序列即:if (p[i].a >= p[j].a && p[i].b >= p...原创 2019-06-20 20:43:33 · 152 阅读 · 0 评论 -
多重背包模板 C++
多重背包模板多重背包: 有N种物品和一个容量为V的背包。第i种物品最多有numi件可用。 每件物品的重量是wi,价值是vi。 求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。const int maxn = 100005;int w[maxn], v[maxn], num[max...原创 2019-06-20 22:28:32 · 1806 阅读 · 0 评论