U662107 疯狂的背包问题(19) - 求恰好装满的最优方案数
题目背景
动态规划问题中的背包问题求恰好装满方案数模板题,要求计算恰好装满背包容量的方案总数。
题目描述
有 $N$ 件物品和一个容量为 $V$ 的背包。每件物品只能使用一次(01背包)。
第 $i$ 件物品的体积是 $v_i$,价值是 $w_i$。
求解将哪些物品装入背包,可使这些物品的总体积 **恰好等于** 背包容量 $V$,且总价值最大。输出 **达到最大价值的方案总数**。
如果无法恰好装满背包,则输出 $0$。
由于方案总数可能很大,请输出对 $10^9 + 7$ 取模后的结果。
输入格式
第一行有两个整数 $N$ 和 $V$,用空格隔开,分别表示物品个数和背包容积。
接下来有 $N$ 行,每行有两个整数 $v_i$ 和 $w_i$,用空格隔开,分别表示第 $i$ 件物品的体积和价值。
输出格式
出一个整数,表示在恰好装满背包的条件下,达到最大价值的方案总数对 $10^9 + 7$ 取模后的结果。
如果无法恰好装满背包,输出 $0$。
说明/提示
**样例 1 解释**:
可以恰好装满容量5的方案有:选物品2和3(体积2+3=5),价值为4+4=8。这是唯一能恰好装满的方案,且是最大价值。
**样例 2 解释**:
可以恰好装满容量5的方案有:
- 选物品1和4:体积1+4=5,价值2+5=7
- 选物品2和3:体积2+3=5,价值3+4=7
两种方案价值相等,且都是最大价值,方案总数为2。
**样例 3 解释**:
没有任何方案能恰好装满容量5,输出0。
**数据范围**
* $1 \leq N \leq 100$
* $1 \leq V \leq 100$
* $1 \leq v_i \leq V$
* $1 \leq w_i \leq 100$
* 答案对 $10^9 + 7$ 取模