#P11164. [BalkanOI 2023] Permutations

    ID: 12534 远端评测题 2000ms 250MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>2023BalkanOI(巴尔干半岛)

[BalkanOI 2023] Permutations

题目描述

译自 BalkanOI 2023 Day1 T3「Permutations」

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

第 i (1≤i≤q)i\ (1\leq i\leq q) 个查询由两个数字 Li,Ri (1≤Li≤Ri≤n)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},满足 1≤s1<s2<…<st≤k1 \leq s_{1}<s_{2}<\ldots<s_{t} \leq k 且 as1>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 (1≤i≤q)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。

数据范围

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

  • 1≤n≤3⋅1051 \leq n \leq 3 \cdot 10^{5}
  • 1≤q≤3⋅1051 \leq q \leq 3 \cdot 10^{5}

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

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