统计超序列
题目描述
给定一个长度为 n 的整数数组 a,其中所有元素 ai 都在区间 [1,k] 内。问有多少个长度为 m 的不同整数数组 b,其中所有元素 bi 也都在区间 [1,k] 内,并且 a 是 b 的一个子序列?如果两个数组在至少一个位置不同,则认为它们是不同的。
如果一个序列 x 可以通过从序列 y 中删除若干(可能为零或全部)元素得到,则称 x 是 y 的一个子序列。
由于答案可能很大,请输出答案对 109+7 取模后的结果。
输入格式
输入的第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含三个整数 n、m、k(1≤n≤2⋅105,n≤m≤109,1≤k≤109),分别表示数组 a 的长度、数组 b 的长度,以及数组中允许的最大值。
接下来一行包含 n 个整数 a1,a2,…,an(1≤ai≤k),表示数组 a 的元素。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个整数,表示满足条件的数组 b 的数量,对 109+7 取模。
样例输入 1
7
1 1000000 1
1
3 4 3
1 2 2
5 7 8
1 2 3 4 1
6 6 18
18 2 2 5 2 16
1 10 2
1
8 10 1234567
1 1 2 1 2 2 2 1
5 1000000000 1000000000
525785549 816356460 108064697 194447117 725595511
样例输出 1
1
9
1079
1
1023
906241579
232432822
提示
对于第一个样例,由于 k=1,只有一个长度为 m 的数组,即 [1,1,…,1]。这个数组包含原数组作为子序列,因此答案为 1。
对于第二个样例,满足条件的 9 个数组分别为 [1,1,2,2],[1,2,1,2],[1,2,2,1],[1,2,2,2],[1,2,2,3],[1,2,3,2],[1,3,2,2],[2,1,2,2],[3,1,2,2]。
对于第四个样例,由于 m=n,唯一一个长度为 m 的数组包含 a 作为子序列的就是 a 本身。
数据范围
对于所有数据,1≤t≤104,1≤n≤2×105,n≤m≤109,1≤k≤109,1≤ai≤k,且所有测试用例的 n 之和不超过 2×105。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
30 |
t≤10,n≤6,m≤8,k≤4 |
| 2 |
t≤20,n≤200,m≤2000,且 ∑(nm)≤106 |
| 3 |
40 |
无特殊限制 |
每个测试点独立计分。