这七天因为有事居然断更了,接下来……应该会继续断更。

话不多说,上期水了一期讲了一下dp的一道水题入门题——数塔问题,这期继续回到背包问题——混合背包问题。
事先说明,混合背包是由前三种背包问题综合而来的,所以没看过之前我讲前三种背包问题的话,建议先去看一下:
01背包一维数组解法
完全背包一维数组解法
多重背包朴素算法
多重背包二进制优化
题目如下:
【题目描述】
有 N N N 种物品和一个容量是 V V V 的背包。
物品一共有三类:
第一类物品只能用1次;
第二类物品可以用无限次;
第三类物品最多只能用 s i s_i si 次;
每种体积是 v i v_i vi,价值是 w i w_i wi。
求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。
输出最大价值。
输入格式
第一行两个整数, N , V N,V N,V,用空格隔开,分别表示物品种数和背包容积。
接下来有 N N N 行,每行三个整数 v i , w i , s i v_i,w_i,s_i vi,wi,si,用空格隔开,分别表示第 i i i 种物品的体积、价值和数量。
s i s_i si= − 1 −1 −1 表示第 i i i 种物品只能用 1 1

这篇博客介绍了混合背包问题,包括问题描述、算法分析、数据存储方式、动态规划数组含义、递推公式、初始化步骤以及代码实现。博主探讨了如何将01背包、完全背包和多重背包问题综合解决,并提供了优化思路,以应对大数据范围可能导致的超时问题。
2764

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



