P13934 [蓝桥杯 2022 省 Java B] 数组切分

题目描述

已知一个长度为 $N$ 的数组:$A_1, A_2, A_3, \ldots, A_N$ 恰好是 $1 \sim N$ 的一个排列。现在要求你将 $A$ 数组切分成若干个(最少一个,最多 $N$ 个)连续的子数组,并且每个子数组中包含的整数恰好可以组成一段连续的自然数。 例如对于 $A = \{1, 3, 2, 4\}$,一共有 $5$ 种切分方法: - $\{1\}\{3\}\{2\}\{4\}$:每个单独的数显然是(长度为 $1$ 的)**一段连续的自然数**。 - $\{1\}\{3, 2\}\{4\}$:$\{3, 2\}$ 包含 $2$ 到 $3$,是**一段连续的自然数**,另外 $\{1\}$ 和 $\{4\}$ 显然也是。 - $\{1\}\{3, 2, 4\}$:$\{3, 2, 4\}$ 包含 $2$ 到 $4$,是**一段连续的自然数**,另外 $\{1\}$ 显然也是。 - $\{1, 3, 2\}\{4\}$:$\{1, 3, 2\}$ 包含 $1$ 到 $3$,是**一段连续的自然数**,另外 $\{4\}$ 显然也是。 - $\{1, 3, 2, 4\}$:只有一个子数组,包含 $1$ 到 $4$,是**一段连续的自然数**。

输入格式

第一行包含一个整数 $N$。第二行包含 $N$ 个整数,代表 $A$ 数组。

输出格式

输出一个整数表示答案。由于答案可能很大,所以输出其对 $10^9+7$ 取模后的值。

说明/提示

**【评测用例规模与约定】** 对于 $30\%$ 评测用例,$1 \leq N \leq 20$. 对于 $100\%$ 评测用例,$1 \leq N \leq 10000$.