#5171. Problem 2. Non-Decreasing Subsequences

0

Problem 2. Non-Decreasing Subsequences

Problem 2. Non-Decreasing Subsequences

USACO 2020 January Contest, Platinum

Bessie 最近参加了一场 USACO 竞赛,遇到了以下问题。当然 Bessie 知道怎么做。那你呢?

考虑一个仅由范围在 1K1\ldots K1K201\le K\le 20)之间的整数组成的长为 NN 的序列 A1,A2,,ANA_1,A_2,\ldots,A_N1N51041\le N\le 5\cdot 10^4)。给定 QQ1Q21051\le Q\le 2\cdot 10^5)个形式为 [Li,Ri][L_i,R_i]1LiRiN1\le L_i\le R_i\le N)的询问。对于每个询问,计算 ALi,ALi+1,ARiA_{L_i},A_{L_i+1}\ldots, A_{R_i} 中不下降子序列的数量模 109+710^9+7 的余数。

AL,,ARA_L,\ldots,A_R 的一个不下降子序列是一组索引 (j1,j2,,jx)(j_1,j_2,\ldots, j_x),满足 Lj1<j2<<jxRL\le j_1<j_2<\cdots<j_x\le R 以及 Aj1Aj2AjxA_{j_1}\le A_{j_2}\le \cdots \le A_{j_x}。确保你考虑了空子序列!

测试点性质: 测试点 2-3 满足 N1000N\le 1000。测试点 4-6 满足 K5K\le 5。测试点 7-9 满足 Q105Q\le 10^5。测试点 10-12 没有额外限制。

输入格式(文件名:nondec.in):

输入的第一行包含两个空格分隔的整数 NNKK

第二行包含 NN 个空格分隔的整数 A1,A2,,ANA_1,A_2,\ldots, A_N

第三行包含一个整数 QQ

以下 QQ 行每行包含两个空格分隔的整数 LiL_iRiR_i

输出格式(文件名:nondec.out):

对于每个询问 [Li,Ri][L_i,R_i],你应当在新的一行内输出 ALi,ALi+1,ARiA_{L_i},A_{L_i+1}\ldots, A_{R_i} 的不下降子序列的数量模 109+710^9+7 的余数。

输入样例:


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

输出样例:


3
4
20

对于第一个询问,不下降子序列为 ()()(2)(2)(3)(3)(2,3)(2,3) 不是一个不下降子序列,因为 A2≰A3A_2\not \le A_3

对于第二个询问,不下降子序列为 ()()(4)(4)(5)(5)(4,5)(4,5)

供题:Benjamin Qi