#243. Non-Decreasing Subsequences

0

Non-Decreasing Subsequences

Non-Decreasing Subsequences

题目描述

Bessie 最近在参加一场 USACO 比赛时遇到了下面这道题。 当然,Bessie 知道怎么解。但你会吗?

给定一个长度为 NN (1≤N≤5⋅104)(1\le N\le 5\cdot 10^4) 的序列 A1,A2,…,ANA_1,A_2,\ldots,A_N,其中每个元素都是 1…K1\ldots K 范围内的整数 (1≤K≤20).(1\le K\le 20). 你将收到 QQ (1≤Q≤2⋅105)(1\le Q\le 2\cdot 10^5) 个形如 [Li,Ri][L_i,R_i] 的询问 (1≤Li≤Ri≤N).(1\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),满足 L≤j1<j2<⋯<jx≤RL\le j_1<j_2<\cdots<j_x\le R 且 Aj1≤Aj2≤⋯≤Ajx.A_{j_1}\le A_{j_2}\le \cdots \le A_{j_x}. 请务必将空子序列也计入!

输入格式

第一行包含两个用空格分隔的整数 NN 和 KK。 第二行包含 NN 个用空格分隔的整数 A1,A2,…,ANA_1,A_2,\ldots, A_N。 第三行包含一个整数 Q.Q. 接下来的 QQ 行每行包含两个用空格分隔的整数 LiL_i 和 Ri.R_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

提示

SCORING: 测试点 2-3 满足 N≤1000N\le 1000。 测试点 4-6 满足 K≤5.K\le 5. 测试点 7-9 满足 Q≤105.Q\le 10^5. 测试点 10-12 没有额外限制。

对于第一个询问,非递减子序列为 (),(2),(), (2), 和 (3).(3). (2,3)(2,3) 不是非递减子序列,因为 A2≰A3.A_2\not \le A_3.

对于第二个询问,非递减子序列为 ()(), (4)(4), (5)(5), 以及 (4,5)(4,5)。

题目鸣谢:Benjamin Qi

标签: USACO|2020|Platinum

来源

USACO|2020|Platinum