![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划
入门
Ye_QO
这个作者很懒,什么都没留下…
展开
-
Coins
POJ 1742 思路 多重部分和问题 滚动数组 见注释 #include<iostream> #include<cstring> using namespace std; int main(){ int n,m,a[105],c[105],dp[100005];//dp数组记录的是第i种钱凑到j元剩余的个数 while(cin>>n>>m&&n&&m){ memset(dp,-1,sizeo原创 2021-03-31 21:43:51 · 60 阅读 · 0 评论 -
DP基础与及例题
分析 有限集中的最值问题 状态表示:f[i]表示一类相似元素的集合,其值为(max,min,count…) 状态计算:f[i]=f[i-1]集合的最优解 题型 一、01背包 二、完全背包 三、石子合并原创 2021-03-18 16:35:03 · 67 阅读 · 0 评论 -
最长公共子序列
最长公共子序列 题目传送门 分析 状态表示 集合f(i,j):所有a[1 , i]和b[1 , j]的公共子序列的集合 属性:求最大值 状态计算 f(i,j)是以下4种情况的最大值 公共子序列不包含a[i]和b[j]的集合 f(i-1,j-1) 公共子序列不包含a[i],包含b[j]的集合 f(i-1,j)-f(i-1,j-1) 公共子序列不包含b[j],包含a[i]的集合 f(i,j-1)- f(i-1,j-1) 公共子序列包含a[i]和b[j]的集合 f(i-1,j-1)+..原创 2021-03-18 16:13:46 · 38 阅读 · 0 评论 -
石子合并
石子合并 题目传送门 分析 状态表示 集合f(i,j):所有将[i , j]合并到一堆的方案的集合 属性:求最小值 状态计算 f(i,j)是以下j-i种情况的最小值 左边的一堆有第i个 左边的一堆有第i,i+1个 左边的一堆有第i,i+1,i+2个 …… 左边的一堆有第i,i+1,i+2,……,k,……个 …… 左边的一堆有第i,i+1,i+2,……,j-1个 不失一般性考虑左边的一堆是第i个到第k个(k<=j-1) 希望的得到的是[i ,k]的最小值加上[k+1,j-1]的最大值 状..原创 2021-03-18 15:45:54 · 44 阅读 · 0 评论 -
完全背包
完全背包问题 有n种重量和价值分别为wi,vi的物品。从这些物品种挑选总重量不超过w的物品,求出挑选物品价值总和的最大值。每种物品可以多次挑选 分析 状态表示 集合f(i,j):所有只从前i个物品种选,且总重量不超过w的方案的集合 属性:求最大值 状态计算 f(i,j)是下面情况的最大值 所有不选第i个物品的方案的集合 所有选1个第i个物品的方案的集合 所有选2个第i个物品的方案的集合 …… 所有选k个第i个物品的方案的集合 …… …… 直到总重量大于w 转移方程 f(i,j) = max..原创 2021-03-18 02:35:23 · 43 阅读 · 0 评论 -
01背包
01背包问题 有n个重量和价值分别为wi,vi的物品。从这些物品种挑选出总重量不超过w的物品,求所有挑选方案中价值总和的最大值。 分析 状态表示 集合f(i,j):所有只考虑前i个物品,且总重量不超过j的选法的集合 属性:求最大值 状态计算 f(i,j)时下面两种情况的最大值 所有选择第i个物品的方案(前i-1个物品中选出总重量不超过w-wi的方案的集合) 所有不选第i个物品的方案(前i-1个物品中选出总重量不超过w的方案的集合) 状态转移方程 f(i,j) = max( f(i-1,w)..原创 2021-03-18 01:40:42 · 124 阅读 · 0 评论