atcoder#ARC104E. [ARC104E] Random LIS

[ARC104E] Random LIS

配点 : 700700

問題文

長さ NN の整数列 A1,A2,,ANA_1, A_2, \cdots, A_N が与えられます。

同じく長さ NN の整数列 XX は、 各 i(1iN)i (1 \leq i \leq N) について独立に、 1XiAi1 \leq X_i \leq A_i を満たす整数の一様分布からランダムに選ばれます。

このとき、XX の最長増加部分列の長さの期待値を mod 10000000071000000007 で計算してください。

より正確には、期待値が有理数、つまりある既約分数 PQ\frac{P}{Q} で表せること、更に R×QP(mod1000000007)R \times Q \equiv P \pmod {1000000007}, 0R<10000000070 \leq R < 1000000007 を満たす整数 RR が一意に定まることがこの問題の制約より証明できますので、この RR を出力してください。

注釈

XX の部分列とは XX の要素をいくつか抜き出して元の順に並べてできる列のことを指し、また、列 XX の最長増加部分列とは、XX の狭義単調増加な部分列の中で列の長さが最大のものを指します。

制約

  • 1N61 \leq N \leq 6
  • 1Ai1091 \leq A_i \leq 10^9
  • 入力は全て整数である

入力

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

NN

A1A_1 A2A_2 \cdots ANA_N

出力

期待値を mod 10000000071000000007 で出力せよ。

3
1 2 3
2

XX はそれぞれ確率 1/61/6 で次のいずれかになります。

  • X=(1,1,1)X = (1,1,1) のとき、最長増加部分列の長さは 11 です。
  • X=(1,1,2)X = (1,1,2) のとき、最長増加部分列の長さは 22 です。
  • X=(1,1,3)X = (1,1,3) のとき、最長増加部分列の長さは 22 です。
  • X=(1,2,1)X = (1,2,1) のとき、最長増加部分列の長さは 22 です。
  • X=(1,2,2)X = (1,2,2) のとき、最長増加部分列の長さは 22 です。
  • X=(1,2,3)X = (1,2,3) のとき、最長増加部分列の長さは 33 です。

よって、最長増加部分列の長さの期待値は $(1 + 2 + 2 + 2 + 2 + 3) / 6 \equiv 2 \pmod {1000000007}$ です。

3
2 1 2
500000005

XX はそれぞれ確率 1/41/4 で次のいずれかになります。

  • X=(1,1,1)X = (1,1,1) のとき、最長増加部分列の長さは 11 です。
  • X=(1,1,2)X = (1,1,2) のとき、最長増加部分列の長さは 22 です。
  • X=(2,1,1)X = (2,1,1) のとき、最長増加部分列の長さは 11 です。
  • X=(2,1,2)X = (2,1,2) のとき、最長増加部分列の長さは 22 です。

よって、最長増加部分列の長さの期待値は (1+2+1+2)/4=3/2(1 + 2 + 1 + 2) / 4 = 3 / 2 ですが、2×5000000053(mod1000000007)2 \times 500000005 \equiv 3 \pmod {1000000007} であるので、500000005500000005 を出力してください。

6
8 6 5 10 9 14
959563502