atcoder#ARC104F. [ARC104F] Visibility Sequence

[ARC104F] Visibility Sequence

题目描述

一列に並んだ N N 棟のビルが建設中であり、ビルには左から順番に 1, 2, , N 1,\ 2,\ \ldots,\ N の番号がついています。

長さ N N の整数列 X X が与えられ、ビル i i の高さ Hi H_i は、1 1 以上 Xi X_i 以下の整数のいずれかにすることができます。

1  i  N 1\ \leq\ i\ \leq\ N に対して、Pi P_i を次のように定めます。

  • Hj > Hi H_j\ >\ H_i を満たすような整数 j (1  j < i) j\ (1\ \leq\ j\ <\ i) が存在する場合はそのような j j の最大値、存在しない場合は 1 -1 とする

全てのビルの高さの組み合わせを考えるとき、 P P としてありうる整数列の個数を 1000000007 1000000007 で割った余りを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N X1 X_1 X2 X_2 \cdots XN X_N

输出格式

全てのビルの高さの組み合わせを考えるとき、 P P としてありうる整数列の個数を 1000000007 1000000007 で割った余りを出力せよ。

题目大意

有一排共 nn 栋房子,同时给出一个长为 nn 的序列 XX,第 ii 栋房子的高度 Hi[1,Xi]H_i\in[1,X_i] 且为整数。
按照房屋的高度生成一个序列 PP,其中 PiP_iii 左边第一个比它高的房子的编号,若不存在,则为 1-1
求有多少种本质不同的 PP,对 109+710^9+7 取模。

3
3 2 1
4
3
1 1 2
1
5
2 2 2 2 2
16
13
3 1 4 1 5 9 2 6 5 3 5 8 9
31155

提示

制約

  • 1  N  100 1\ \leq\ N\ \leq\ 100
  • 1  Xi  105 1\ \leq\ X_i\ \leq\ 10^5
  • 入力は全て整数である

Sample Explanation 1

H H としては、次の 6 6 通りが考えられます。 - H = (1, 1, 1) H\ =\ (1,\ 1,\ 1) のとき、P P (1, 1, 1) (-1,\ -1,\ -1) である - H = (1, 2, 1) H\ =\ (1,\ 2,\ 1) のとき、P P (1, 1, 2) (-1,\ -1,\ 2) である - H = (2, 1, 1) H\ =\ (2,\ 1,\ 1) のとき、P P (1, 1, 1) (-1,\ 1,\ 1) である - H = (2, 2, 1) H\ =\ (2,\ 2,\ 1) のとき、P P (1, 1, 2) (-1,\ -1,\ 2) である - H = (3, 1, 1) H\ =\ (3,\ 1,\ 1) のとき、P P (1, 1, 1) (-1,\ 1,\ 1) である - H = (3, 2, 1) H\ =\ (3,\ 2,\ 1) のとき、P P (1, 1, 2) (-1,\ 1,\ 2) である よって、P P としてありうる整数列は $ (-1,\ -1,\ -1),\ (-1,\ -1,\ 2),\ (-1,\ 1,\ 1),\ (-1,\ 1,\ 2) $ の 4 4 個です。

Sample Explanation 2

H H としては、次の 2 2 通りが考えられます。 - H = (1, 1, 1) H\ =\ (1,\ 1,\ 1) のとき、P P (1, 1, 1) (-1,\ -1,\ -1) である - H = (1, 1, 2) H\ =\ (1,\ 1,\ 2) のとき、P P (1, 1, 1) (-1,\ -1,\ -1) である よって、P P としてありうる整数列は 1 1 個です。