#wch103. 01背包入门2

01背包入门2

题目描述

在星光璀璨的夜空中,有 nn 颗特别的星星。第 ii 颗星星能发出亮度为 aia_i 的光芒。 天文爱好者小 C 正在寻找一种特定的星空图案,这种图案需要由若干颗星星组成,并且它们的总亮度恰好等于 xx。 每颗星星只能被选中一次或者不被选中。小 C 想知道,有多少种不同的星星组合方式可以形成他想要的图案? 由于组合的方式可能非常多,请将答案对 109+710^9+7 取模后输出。

输入格式

本题有多组测试数据。 第一行包含一个整数 TT,表示测试数据的组数。 接下来依次给出 TT 组数据。对于每组测试数据: 第一行包含两个整数 nn 和 xx,分别表示星星的数量和目标总亮度。 第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n,表示每颗星星的亮度。

输出格式

对于每组测试数据,输出一行,包含一个整数,表示能使亮度总和恰好为 xx 的组合方案数对 109+710^9+7 取模的结果。

样例输入

2
4 5
1 2 3 4
5 10
2 3 5 5 2

样例输出

2
3

样例解释

在第一组样例中,星星的亮度为 1,2,3,41, 2, 3, 4,目标亮度为 55。有两种组合方式:

  1. 选取亮度为 11 和 44 的星星。
  2. 选取亮度为 22 和 33 的星星。 方案数为 22。

在第二组样例中,星星的亮度为 2,3,5,5,22, 3, 5, 5, 2,目标亮度为 1010。有三种组合方式:

  1. 选取第 1,2,31, 2, 3 颗星星(2+3+5=102+3+5=10)。
  2. 选取第 1,2,41, 2, 4 颗星星(2+3+5=102+3+5=10)。
  3. 选取第 3,43, 4 颗星星(5+5=105+5=10)。 (注:数值相同的不同星星视为不同的选择对象) 方案数为 33。

数据范围

  • 1≤T≤101 \le T \le 10
  • 1≤n≤1001 \le n \le 100
  • 1≤ai≤1001 \le a_i \le 100
  • 1≤x≤∑ai1 \le x \le \sum a_i