小x有一个 二进制 数组^{\text{∗}}a,长度为 n。
他将取出该数组中所有长度为 k 的子序列^{\text{†}}(k 为奇数),并找到它们的中位数。^{\text{‡}}
这些值的总和是多少?
由于这个总和可能非常大,请输出它对 10^9 + 7的模。换句话说,打印这个总和除以 100,019的余数。
^{\text{∗}}a二进制数组是仅由0和1组成的数组。
数组 b 是数组a 的一个子序列,如果 b可以通过删除数组 a中的若干(可能是零个或全部)元素得到。子序列 不 必须是连续的。
^{\text{‡}}长度为奇数的数组 k的中位数是排序后第 \frac{k+1}{2}个元素。
第一行包含一个整数t(\leq t \leq 10^4) — 测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 k (\leq k \leq n \leq 2 \cdot 10^5, k为奇数) — 数组的长度和子序列的长度。
每个测试用例的第二行包含 n 个整数 (0 \leq a_i \leq 1) — 数组的元素。
保证所有测试用例的 n 之和不超过 2 \cdot 10^5。
对于每个测试用例,打印总和对 10^9 + 7的模。
8 4 3 1 0 0 1 5 1 1 1 1 1 1 5 5 0 1 0 1 0 6 3 1 0 1 0 1 1 4 3 1 0 1 1 5 3 1 0 1 1 0 2 1 0 0 34 17 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 5 0 16 4 7 0 333606206
在第一个测试用例中,有四个长度为k=3的 [1,0,0,1] 的子序列:
- [1,0,0]: 中位数 =0。
- [1,0,1]: 中位数 =1。
- [1,0,1]: 中位数 =1。
- [0,0,1]: 中位数 =0。
结果的总和是 0+1+1+0=2。
在第二个测试用例中,所有长度为 111 的子序列的中位数为 111,所以答案是 555。
数据范围:
40%数据:t(\leq t \leq 10,1\leq k \leq n \leq 30) ,k是奇数
100%数据:t(\leq t \leq 10^4,1\leq k \leq n \leq 2 \cdot 10^5) ,k是奇数
保证所有测试用例的 n 之和不超过 2 \cdot 10^5。