【概述】
背包问题(Knapsack problem)是一种组合优化的NP完全问题。
问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。
也可以将背包问题描述为决定性问题,即:在总重量不超过W的前提下,总价值是否能达到V?
【分类】
- P01 0-1背包问题:最基本的背包问题,每个物品最多只能放一次。 点击这里
- P02 完全背包问题:基本的背包问题模型,每种物品可以放无限多次。 点击这里
- P03 多重背包问题:每种物品有一个固定的次数上限。 点击这里
- P04 混合三种背包问题:将前三种的问题叠加成较复杂的问题。 点击这里
- P05 二维费用的背包问题:费用增加了一维。 点击这里
- P06 分组的背包问题:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价。 点击这里
- P07 有依赖的背包问题:给物品的选取加上限制的方法。 点击这里
- P08 泛化物品的背包问题:没有固定的费用和价值,而是它的价值随着你分配给它的费用而变化。 点击这里
- P09 背包问题问法的变化:除在背包容量的限制下求可取最大价值外的其他问法。 点击这里
【例题】
各种背包问题模版:点击这里
1.01背包
- 开心的金明(洛谷-P1060):点击这里
- 小A点菜(洛谷-P1164):点击这里
- 采药(洛谷-P1048):点击这里
同题:采药(信息学奥数一本通-T1290):点击这里 - 装箱问题(洛谷-P1049):点击这里
- Bone Collector(HDU-2602):点击这里
同题:装箱问题(信息学奥数一本通-T1295):点击这里 - 01背包问题(信息学奥数一本通-T1267):点击这里
- Charm Bracelet(信息学奥数一本通-T1294):点击这里
英文版:Charm Bracelet(POJ-3624):点击这里 - 榨取kkksc03(洛谷-P1855):点击这里
- 正整数分组(51Nod-1007):点击这里
- 开餐馆(信息学奥数一本通-T1296):点击这里
- 烹调方案(洛谷-P1417)(贪心+01背包):点击这里
- Proud Merchants(HDU-3466)(贪心+01背包):点击这里
- Cow Roller Coaster(POJ-3257)(贪心+01背包):点击这里
- Big Event in HDU(HDU-1171)(思维+01背包):点击这里
- Course Selection System(ZOJ-3956)(公式推导+01背包):点击这里
- Dima and Salad(CF-366C)(扩容+01背包):点击这里
- Simple Knapsack(AtCoder-2556)(扩容+01背包):点击这里
- 多米诺骨牌(洛谷-P1282)(思维+扩容+01背包):点击这里
2.完全背包
- 完全背包问题(信息学奥数一本通-T1268):点击这里
- 疯狂的采药(洛谷-P1616):点击这里
- Piggy-Bank(HDU-1114)(思维+完全背包):点击这里
- Battle Ships(ZOJ-3623)(思维+完全背包):点击这里
- Dollar Dayz(POJ-3181)(完全背包+高精度加法):点击这里
3.多重背包
- 庆功会(信息学奥数一本通-T1269):点击这里
- Buns(CF-106C):点击这里
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(HDU-2191):点击这里
- Ant Counting(POJ-3046)(贪心+多重背包):点击这里
4.其他
- 混合背包(信息学奥数一本通-T1270)(01背包+完全背包+多重背包):点击这里
- The Fewest Coins(POJ-3260)(完全背包+多重背包):点击这里
- 潜水员(信息学奥赛一本通-T1271)(二维费用背包):点击这里
- 宠物小精灵之收服(信息学奥赛一本通-T1292)(二维费用背包):点击这里
- 分组背包(信息学奥赛一本通-T1272)(分组背包):点击这里
- Washing Clothes(POJ-3211)(分组背包+01背包):点击这里
- 金明的预算方案(洛谷-P1064)(有依赖的背包):点击这里
- 货币系统(信息学奥赛一本通-T1273)(最优方案数):点击这里
- 数字组合(信息学奥数一本通-T1291)(方案总数):点击这里
- 买书(信息学奥数一本通-T1293)(方案总数):点击这里
- 高橋君とカード / Tak and Cards(AtCoder-2037)(方案总数):点击这里