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

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

题目描述

已知一个长度为 NN 的数组:A1,A2,A3,,ANA_1, A_2, A_3, \ldots, A_N 恰好是 1N1 \sim N 的一个排列。现在要求你将 AA 数组切分成若干个(最少一个,最多 NN 个)连续的子数组,并且每个子数组中包含的整数恰好可以组成一段连续的自然数。

例如对于 A={1,3,2,4}A = \{1, 3, 2, 4\},一共有 55 种切分方法:

  • {1}{3}{2}{4}\{1\}\{3\}\{2\}\{4\}:每个单独的数显然是(长度为 11 的)一段连续的自然数
  • {1}{3,2}{4}\{1\}\{3, 2\}\{4\}{3,2}\{3, 2\} 包含 2233,是一段连续的自然数,另外 {1}\{1\}{4}\{4\} 显然也是。
  • {1}{3,2,4}\{1\}\{3, 2, 4\}{3,2,4}\{3, 2, 4\} 包含 2244,是一段连续的自然数,另外 {1}\{1\} 显然也是。
  • {1,3,2}{4}\{1, 3, 2\}\{4\}{1,3,2}\{1, 3, 2\} 包含 1133,是一段连续的自然数,另外 {4}\{4\} 显然也是。
  • {1,3,2,4}\{1, 3, 2, 4\}:只有一个子数组,包含 1144,是一段连续的自然数

输入格式

第一行包含一个整数 NN。第二行包含 NN 个整数,代表 AA 数组。

输出格式

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

4
1 3 2 4
5

提示

【评测用例规模与约定】

对于 30%30\% 评测用例,1N201 \leq N \leq 20.

对于 100%100\% 评测用例,1N100001 \leq N \leq 10000.