luogu#P11164. 「BalkanOI 2023 Day1」Permutations

「BalkanOI 2023 Day1」Permutations

题目描述

译自 BalkanOI 2023 Day1 T3「Permutations

给你一个由数字 1,2,,n1,2, \ldots, n 组成的排列 p1,p2,,pnp_{1}, p_{2}, \ldots, p_{n}。你需要回答 qq 个查询。

i (1iq)i\ (1\leq i\leq q) 个查询由两个数字 Li,Ri (1LiRin)L_{i},R_{i}\ (1 \leq L_{i} \leq R_{i} \leq n) 表示。你需要回答满足以下条件的排列个数:

  • 排列的长度为 nn
  • 以序列 $p_{L_{i}}, p_{L_{i}+1}, \ldots, p_{R_{i}-1}, p_{R_{i}}$ 作为开头;
  • 排列的最长递减子序列的长度至多为 22

由于答案可能很大,输出它们对 109+710^{9}+7 取模的结果。

对于一个序列 a1,a2,,aka_{1}, a_{2}, \ldots, a_{k},它的最长递减子序列的长度是最大的整数 tt,使得存在 tt 个下标 s1,s2,,sts_{1}, s_{2}, \ldots, s_{t},满足 1s1<s2<<stk1 \leq s_{1}<s_{2}<\ldots<s_{t} \leq kas1>as2>>asta_{s_{1}}>a_{s_{2}}>\ldots>a_{s_{t}}

输入格式

第一行包含一个整数 nn

第二行包含 nn 个整数 p1,,pnp_{1}, \ldots, p_{n},即区间 [1,n][1, n] 中的 nn 个不同的整数。

第三行包含一个整数 qq

接下来的 qq 行每行描述了一个查询。第 i (1iq)i\ (1\leq i\leq q) 行包含两个整数字 LiL_{i}RiR_{i}

输出格式

对于每个查询输出单独的一行,表示打印排列的个数对 109+710^{9}+7 取模的结果。

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

提示

样例解释

对于第一个查询,考虑到有四个序列 1,2,3,4,5\langle 1,2,3,4,5\rangle 的排列以 44 开始,并且它们的最长递减子序列的长度至多为 22。这些排列是:

  • 4,1,2,3,5\langle 4,1,2,3,5\rangle
  • 4,1,2,5,3\langle 4,1,2,5,3\rangle
  • 4,1,5,2,3\langle 4,1,5,2,3\rangle
  • 4,5,1,2,3\langle 4,5,1,2,3\rangle

数据范围

对于所有输入数据,满足:

  • 1n31051 \leq n \leq 3 \cdot 10^{5}
  • 1q31051 \leq q \leq 3 \cdot 10^{5}

详细子任务附加限制及分值如下表所示。

子任务编号 附加限制 分值
11 n10,q10n \leq 10, q \leq 10 66
22 n1000,q1000n \leq 1000, q \leq 1000,每个查询的区间内都包含 pj=np_{j}=n 77
33 每个查询的区间内都包含 pj=np_{j}=n 99
44 n1000,q1000n \leq 1000, q \leq 1000pi=i (1in)p_{i}=i\ (1\leq i\leq n)Lj=1 (1jq)L_{j}=1\ (1\leq j\leq q) 1212
55 pi=i (1in)p_{i}=i\ (1\leq i \leq n)Lj=1 (1jq)L_{j}=1\ (1\leq j\leq q) 1818
66 n1000,q1000n \leq 1000, q \leq 1000 1212
77 无附加限制 3636