P11164 [BalkanOI 2023] Permutations

题目描述

**译自 [BalkanOI 2023](https://boi2023.zotks.si) Day1 T3「[Permutations](https://boi2023.zotks.si/wp-content/uploads/day_1/d1_permutations/en_EN.pdf)」** 给你一个由数字 $1,2, \ldots, n$ 组成的排列 $p_{1}, p_{2}, \ldots, p_{n}$。你需要回答 $q$ 个查询。 第 $i\ (1\leq i\leq q)$ 个查询由两个数字 $L_{i},R_{i}\ (1 \leq L_{i} \leq R_{i} \leq n)$ 表示。你需要回答满足以下条件的排列个数: - 排列的长度为 $n$; - 以序列 $p_{L_{i}}, p_{L_{i}+1}, \ldots, p_{R_{i}-1}, p_{R_{i}}$ 作为开头; - 排列的最长递减子序列的长度至多为 $2$。 由于答案可能很大,输出它们对 $10^{9}+7$ 取模的结果。 对于一个序列 $a_{1}, a_{2}, \ldots, a_{k}$,它的最长递减子序列的长度是最大的整数 $t$,使得存在 $t$ 个下标 $s_{1}, s_{2}, \ldots, s_{t}$,满足 $1 \leq s_{1}a_{s_{t}}$。

输入格式

第一行包含一个整数 $n$。 第二行包含 $n$ 个整数 $p_{1}, \ldots, p_{n}$,即区间 $[1, n]$ 中的 $n$ 个不同的整数。 第三行包含一个整数 $q$。 接下来的 $q$ 行每行描述了一个查询。第 $i\ (1\leq i\leq q)$ 行包含两个整数字 $L_{i}$ 和 $R_{i}$。

输出格式

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

说明/提示

### 样例解释 对于第一个查询,考虑到有四个序列 $\langle 1,2,3,4,5\rangle$ 的排列以 $4$ 开始,并且它们的最长递减子序列的长度至多为 $2$。这些排列是: - $\langle 4,1,2,3,5\rangle$; - $\langle 4,1,2,5,3\rangle$; - $\langle 4,1,5,2,3\rangle$; - $\langle 4,5,1,2,3\rangle$。 ### 数据范围 对于所有输入数据,满足: - $1 \leq n \leq 3 \cdot 10^{5}$ - $1 \leq q \leq 3 \cdot 10^{5}$ 详细子任务附加限制及分值如下表所示。 | 子任务编号 | 附加限制 | 分值 | | :--: | :--: | :--: | | $1$ | $n \leq 10, q \leq 10$ | $6$ | | $2$ | $n \leq 1000, q \leq 1000$,每个查询的区间内都包含 $p_{j}=n$ | $7$ | | $3$ | 每个查询的区间内都包含 $p_{j}=n$ | $9$ | | $4$ | $n \leq 1000, q \leq 1000$,$p_{i}=i\ (1\leq i\leq n)$,$L_{j}=1\ (1\leq j\leq q)$ | $12$ | | $5$ |$p_{i}=i\ (1\leq i \leq n)$,$L_{j}=1\ (1\leq j\leq q)$ | $18$ | | $6$ | $n \leq 1000, q \leq 1000$ | $12$ | | $7$ | 无附加限制 | $36$ |