题目
解题思路
这是一个完全背包问题的变体,需要解决两个子问题:
-
问题分析:
- 第一问:求背包能装下的最大价值(不要求装满)
- 第二问:求背包恰好装满时的最大价值(要求装满)
- 每种物品可以使用无限次
-
状态定义:
- d p 1 [ j ] dp1[j] dp1[j]:容量为j时能装下的最大价值(不要求装满)
- d p 2 [ j ] dp2[j] dp2[j]:容量为j时恰好装满的最大价值(要求装满)
-
与01背包的区别:
- 完全背包正序遍历容量(因为物品可重复使用)
- 01背包逆序遍历容量(避免物品重复使用)
-
状态转移:
- 对每个物品 i i i:
- 对每个容量 j j j 从 v i v_i vi 到 V V V:
- d p 1 [ j ] = max ( d p 1 [ j ] , d p 1 [ j − v i ] + w i ) dp1[j] = \max(dp1[j], dp1[j-v_i] + w_i) dp1[j]=max(dp1[j],dp1[j−vi<
- 对每个容量 j j j 从 v i v_i vi 到 V V V:
- 对每个物品 i i i:

最低0.47元/天 解锁文章
1043

被折叠的 条评论
为什么被折叠?



