上篇文章和大家分享了如何用朴素算法解决多重背包问题,没看过的建议先去看看。
多重背包问题之朴素算法
但上篇文章结尾也说了,这个算法是需要优化的,今天就给大家分享一下多重背包问题的二进制优化方法。
当然,还有单调队列优化方法,但可惜我学艺不精,未能学到如此牛的方法。
题目如下:
有 N N N 种物品和一个容量是 V V V 的背包。
第 i 种物品最多有 s i s_i si 件,每件体积是 v i v_i vi,价值是 w i w_i wi。
求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。
输出最大价值。
输入格式
第一行两个整数, N N N, V V V,用空格隔开,分别表示物品种数和背包容积。
接下来有 N 行,每行三个整数 v i v_i vi