题目大意:xx去买鞋,有k种牌子,然后给出n双鞋,每双鞋有它属于的牌子、价格、收藏价值。xx认为他不差钱,要求每种鞋子买一双。但实际上他只有m毛钱,问能否买到符合xx要求的鞋,能找到的话输出最大的收藏价值总和。
分组背包的变形,每种牌子要求至少选一个,这与分组背包的每组最多选一个不一样,但背包的思想都是一样的。。。
就是
状态转移的时候可以加上从上一组转移(选择1个)与本组转移(大于1个),还有注意枚举物品和枚举体积的顺序~~
设dp[i][j]表示前i组填到容量j的最大价值,
则方程为:dp[i][j] = max(dp[i][j],dp[i-1][j-price[i][k]] + value[i][k],dp[i][j-price[[i][k]] + value[i][k])
#include
#include
#include
#include
#include
#include
#include
#include
#include