#P6009. [USACO20JAN] Non-Decreasing Subsequences P

    ID: 6765 远端评测题 2000ms 250MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>动态规划 DP2020USACO矩阵运算分治

[USACO20JAN] Non-Decreasing Subsequences P

题目描述

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

考虑一个仅由范围在 1…K1 \ldots K(1≤K≤201 \leq K \leq 20)之间的整数组成的长为 NN 的序列 A1,A2,…,ANA_1,A_2, \ldots ,A_N(1≤N≤5×1041 \leq N \leq 5 \times 10^4)。给定 QQ( 1≤Q≤2×1051 \leq Q \leq 2 \times 10^5 )个形式为 [Li,Ri][L_i,R_i](1≤Li≤Ri≤N1 \leq L_i \leq R_i \leq 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,…,jxj_1,j_2, \ldots ,j_x),满足 L≤j1<j2<…<jx≤RL\le j_1<j_2<\ldots<j_x\le R 以及 Aj1≤Aj2≤…≤AjxA_{j_1}\le A_{j_2}\le \ldots \le A_{j_x}。确保你考虑了空子序列!

输入格式

输入的第一行包含两个空格分隔的整数 NN 和 KK。

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

第三行包含一个整数 QQ。

以下 QQ 行每行包含两个空格分隔的整数 LiL_i 和 RiR_i。

输出格式

对于每个询问 [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)。

子任务

  • 测试点 2∼32 \sim 3 满足 N≤1000N \leq 1000。
  • 测试点 4∼64 \sim 6 满足 K≤5K \leq 5。
  • 测试点 7∼97 \sim 9 满足 Q≤105Q \leq 10^5。
  • 测试点 10∼1210 \sim 12 没有额外限制。