今天早晨我突发奇想,会不会有这么一种背包问题(我不知道是什么类型的):
总共有 t 个背包,第 i 个背包的容量为 t [ i ],还有n件物品,第 n 件物品的重量是 w [ i ] , 价值是 c [ i ]。
求能获得的最大价值。
第 1 行:输入 t, n。
第 2 行:输入 t 个数,分别是 t [ 1 ] , t [ 2 ] , .·. , t [ n ]
第 3 行:输入 n 个数,分别是 w [ 1 ] , w [ 2 ] , .·. , w [ n ]
第 4 行:输入 n 个数,分别是 c [ 1 ] , c [ 2 ] , .·. , c [ n ]
共一行输出:求能获得的最大价值。
求思路!
题目确定没问题?
t[i] 里面有n 个物品,然后每个物品的重量都是一样的w[i]?然后每个物品的价值都是一样的c[i]?
其实跟一个背包问题差不多
只不过一个背包问题,你只需要总重量不超过背包的容量
而t个背包,你要判断每个背包的重量都不超过每个背包的容量
这个过程就够麻烦了,大概需要3重循环来遍历
剩下的判断总价值的代码跟一个是相同的
设 f[a_1][a_2]...[a_t]为第一个背包重a_1,第二个背包重a_2...第n个背包重a_n的最大代价
然后转移就很简单,枚举放哪个书包
不过时间复杂度有点高,O(n\Pi t),\Pi t表示全部t乘在一起