CF1999F Expected Median
题目描述
Arul 有一个长度为 $n$ 的二进制数组 $a$。
他将取出该数组所有长度为 $k$($k$ 为奇数)的子序列,并找到它们的中位数。
所有这些中位数的值之和是多少?
由于这个和可能非常大,请输出它对 $10^9 + 7$ 取模的结果。换句话说,输出这个和除以 $10^9 + 7$ 的余数。
一个二进制数组是仅由 $0$ 和 $1$ 组成的数组。
数组 $b$ 是数组 $a$ 的子序列,如果 $b$ 可以通过从 $a$ 中删除若干(可能为零或全部)元素得到。子序列不要求连续。
长度为奇数 $k$ 的数组的中位数是将其排序后第 $\frac{k+1}{2}$ 个元素。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。
每个测试用例的第一行包含两个整数 $n$ 和 $k$($1 \leq k \leq n \leq 2 \cdot 10^5$,$k$ 为奇数),分别表示数组的长度和子序列的长度。
每个测试用例的第二行包含 $n$ 个整数 $a_i$($0 \leq a_i \leq 1$),表示数组的元素。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示答案对 $10^9 + 7$ 取模的结果。
说明/提示
在第一个测试用例中,$[1,0,0,1]$ 的所有长度为 $k=3$ 的子序列有四个:
- $[1,0,0]$:中位数 $=0$。
- $[1,0,1]$:中位数 $=1$。
- $[1,0,1]$:中位数 $=1$。
- $[0,0,1]$:中位数 $=0$。
结果之和为 $0+1+1+0=2$。在第二个测试用例中,所有长度为 $1$ 的子序列的中位数都是 $1$,所以答案是 $5$。
由 ChatGPT 4.1 翻译