atcoder#ABC209F. [ABC209F] Deforestation

[ABC209F] Deforestation

题目描述

N N 本の木が左右一列に並んでおり、左から i (1  i  N) i\,\ (1\ \leq\ i\ \leq\ N) 本目の木 i i の高さは Hi H_i です。

あなたは、好きな順番でこれら N N 本の木を全て伐採します。具体的には、 (1,2, , N) (1,2,\ \ldots,\ N) の並び替えによって得られるある順列 P P について、i=1,2,3,...,N i=1,2,3,...,N の順に、

  • HPi1+HPi+HPi+1 H_{P_i-1}+H_{P_i}+H_{P_i+1} のコストを支払った後、木 Pi P_i を伐採する。すなわち、HPi H_{P_i} 0 0 にする。

という操作を行います。ただし、H0=0,HN+1=0 H_0=0,H_{N+1}=0 とします。

言い換えると、ある木を伐採するのにかかるコストは木を伐採する直前での、その木と両隣の木の高さの総和となります。

支払うコストの総和が最小となるような P P の個数を求めてください。答えは非常に大きくなる可能性があるので、(109+7) (10^9+7) で割った余りを出力してください。

输入格式

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

N N H1 H_1 H2 H_2 \ldots HN H_N

输出格式

支払うコストの総和が最小となるような P P の個数を (109+7) (10^9+7) で割った余りを出力せよ。

题目大意

nn 个数:a1,a2,...,ana_1,a_2,...,a_n

每次可以选择一个 ii,选择的代价是 ai1+ai+ai+1a_{i-1}+a_i+a_{i+1},然后令 ai=0a_i=0

求有多少种方案,使得 a1,a2,...,ana_1,a_2,...,a_n 都变为 00 的总代价最小。特别的,a0=an+1=0a_0=a_{n+1}=0

3
4 2 4
2
3
100 100 100
6
15
804289384 846930887 681692778 714636916 957747794 424238336 719885387 649760493 596516650 189641422 25202363 350490028 783368691 102520060 44897764
54537651

提示

制約

  • 1  N  4000 1\ \leq\ N\ \leq\ 4000
  • 1  Hi  109 1\ \leq\ H_i\ \leq\ 10^9
  • 入力は全て整数

Sample Explanation 1

支払うコストの総和が最小となるような P P は、(1,3,2) (1,3,2) (3,1,2) (3,1,2) 2 2 つです。以下、木の伐採の例を示します。 P=(1,3,2) P=(1,3,2) のとき - 最初に木 1 1 を伐採する。この時に支払うコストは H0+H1+H2=6 H_0+H_1+H_2=6 である。 - 次に木 3 3 を伐採する。この時に支払うコストは H2+H3+H4=6 H_2+H_3+H_4=6 である。 - 最後に木 2 2 を伐採する。この時に支払うコストは H1+H2+H3=2 H_1+H_2+H_3=2 である。 支払うコストの総和は 14 14 となります。

Sample Explanation 3

(109+7) (10^9+7) で割った余りを出力することに注意してください。