多阶段DP问题

21 篇文章 0 订阅

多阶段DP问题的定义:一个问题可以分成多个阶段,每个阶段有多个状态,且每个阶段的状态只与上一阶段的状态有关。

这类问题,题目一般会给出多个对象各自的属性和一个限制的条件,然后计算如何操作这些对象获得最优值

我们可以用 dp[阶段][限制条件(状态)] 来记录某个阶段中某个状态的最优解

然后找到dp[i][cur]与上一阶段的状态有什么联系,从有联系的状态中找出最优解


例如01背包问题

对象:物品;

属性:重量、价值

限制条件:背包容量v

dp[i][v] 记录前i个物品(阶段i),剩下容量v时候(限制条件v,或者状态v),能得到的最大价值是多少?

考虑阶段i的最优解,就是在考虑第i个物品是“要”,还是 “不要”

而“要”的话,就与阶段i-1的状态v-w[i]有关

“不要”的话,就与阶段i-1的状态v有关

在上一阶段有联系的状态中找到最优解:

dp[i][v] = max{ dp[i-1][v] , dp[i-1][v-w[i]] + c[i] }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值