U661993 疯狂的背包问题(11) - 混合背包问题

题目背景

动态规划问题中的混合背包问题模板题,结合了01背包与完全背包。

题目描述

有 $N$ 种物品和一个容量为 $V$ 的背包。 对于第 $i$ 种物品,有两种类型: * 如果 $s_i = -1$,则表示该物品只有 1 件(01背包) * 如果 $s_i = 0$,则表示该物品有无限件(完全背包) 每件物品的体积为 $V_i$,价值为 $W_i$。 求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。

输入格式

第一行有两个整数 $N$ 和 $V$,用空格隔开,分别表示物品种数和背包容积。 接下来有 $N$ 行,每行有三个整数 $V_i$、$W_i$、$S_i$,用空格隔开,分别表示第 $i$ 种物品的体积、价值和类型标记。

输出格式

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

说明/提示

**数据范围** * $1 \leq N \leq 1000$ * $1 \leq V \leq 1000$ * $1 \leq v_i, w_i \leq 100$ * $s_i \in \{-1, 0\}$,其中 -1 表示01背包,0 表示完全背包