#P45. 【模板】混合背包

    ID: 841 传统题 1000ms 256MiB 尝试: 8 已通过: 3 难度: 3 上传者: 标签>动态规划一本通在线评测DP01背包完全背包多重背包混合背包背包问题dp

【模板】混合背包

题目描述

一个旅行者有一个最多能装 MM 公斤的背包,现在有 nn 件物品,它们的重量分别是 W1,W2,,WnW_1, W_2, \dots, W_n,它们的价值分别是 C1,C2,,CnC_1, C_2, \dots, C_n。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。

输入格式

第一行两个整数 MMNN,分别表示背包容量和物品数量。

接下来 NN 行,每行三个整数 Wi,Ci,PiW_i, C_i, P_i,分别表示第 ii 件物品的重量、价值以及可购买的最多件数。若 Pi=0P_i = 0,表示该物品可以购买无限件;否则表示该物品最多能购买 PiP_i 件。

输出格式

输出一行一个整数,表示最大总价值。

样例

10 3
2 1 0
3 3 1
4 5 4
11

提示

样例解释

最优选择:第一件物品取 11 件(重量 22,价值 11),第三件物品取 22 件(总重量 4×2=84 \times 2 = 8,总价值 5×2=105 \times 2 = 10)。总重量为 2+8=102 + 8 = 10,不超过背包容量;总价值为 1+10=111 + 10 = 11,为最大值。

数据范围

  • 1M2001 \le M \le 200
  • 1N301 \le N \le 30
  • 1Wi,Ci1001 \le W_i, C_i \le 100
  • 0Pi1000 \le P_i \le 100