背包问题的一个变种

Posted 轻红

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了背包问题的一个变种相关的知识,希望对你有一定的参考价值。

灵感来自:http://poj.org/problem?id=1042

 

已知背包容量固定且为单位体积的N倍。

物品种类固定为M

每种物品都没有数量上限

每件物品的体积都是单位体积

每件物品的价值与背包中该类物品的数量有关,物品的价值与背包内该物品的数量成一次函数关系

第i 种物品的初始价值为fi,背包里每有一件该类物品,下一件该类物品的价值降低di

  例:A货物的初始价值f1=10,价值递减系数di=1,背包中如果有两件A货物,其价值总和即为10+9=19

给出N,M,fi,di,求一个能得出最佳选择能使背包中物品的价值最高

其时间复杂度应当低于N*M

问:如何设计该算法,能否使该算法的时间复杂度为N+M

以上是关于背包问题的一个变种的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp //背包问题的变种

HDU3466(01背包变种)

[计数dp] 整数划分(模板题+计数dp+完全背包变种题)

01背包问题变种:从给定的N个正数中选取若干个数之和最接近M的JAVA写法

01背包(变种)

动态规划入门——传说中的零一背包问题