【模板】01背包(计数)
题号:NC283280
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}对于给定的 n 件物品和一个容量为 m 的背包,每件物品有体积 w_i 和价值 v_i 两种属性。你可以选取一些物品放入背包带走,求解在装入物品总体积不超过 m 的前提下,总价值最大的选取方案数。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10 \right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}在一行上输入两个整数 n,m\left( 1 \leqq n,m \leqq 10^4 \right) 代表物品数量、背包容量。
\hspace{15pt}此后 n 行,第 i 行输入两个整数 w_i,v_i \left( 0 \leqq w_i,v_i \leqq m \right) 代表第 i 件物品的体积、价值。

输出描述:

\hspace{15pt}对于每一组测试数据,在一行上输出一个整数,代表总价值最大的选取方案数。由于答案可能很大,请将答案对 (10^9+7) 取模后输出。
示例1

输入

复制
1
2 3
2 3
2 3

输出

复制
2