atcoder#AGC028B. [AGC028B] Removing Blocks

[AGC028B] Removing Blocks

得分 : 600600

问题描述

NN 个块沿一排排列,从左到右编号为 11NN
每个块都有一个重量,块 ii 的重量为 AiA_i
Snuke 将对这些块进行 NN 次操作:

  • 选择一个仍未被移除的块,并将其移除。
    此操作的成本为与被移除块相连的块的重量之和(包括它自身)。
    在这里,两个块 xxyyxyx \leq y)被称为 连接,当且仅当,对于所有 zzxzyx \leq z \leq y),块 zz 仍未被移除。

N!N! 种可能的顺序,Snuke 可以移除这些块。
对于所有这些 N!N! 种顺序,计算 NN 次操作的总成本,并求出这些 N!N! 个总成本的和。
由于答案可能非常大,计算和对 109+710^9+7 取模。

约束条件

  • 1N1051 \leq N \leq 10^5
  • 1Ai1091 \leq A_i \leq 10^9
  • 输入中的所有值都是整数。

输入

输入通过标准输入给出,格式如下:

NN

A1A_1 A2A_2 ...... ANA_N

输出

对于所有 N!N! 种顺序,找到 NN 次操作的总成本,并输出这些 N!N! 个总成本的和,取模 109+710^9+7

2
1 2
9

首先,我们考虑顺序 “块 11 -> 块 22”。
在第一次操作中,操作的成本为 1+2=31+2=3,因为块 1122 是连接的。
在第二次操作中,操作的成本为 22,因为只剩下块 22
因此,这个顺序的两个操作的总成本为 3+2=53+2=5

然后,我们考虑顺序 “块 22 -> 块 11”。
在第一次操作中,操作的成本为 1+2=31+2=3,因为块 1122 是连接的。
在第二次操作中,操作的成本为 11,因为只剩下块 11
因此,这个顺序的两个操作的总成本为 3+1=43+1=4

因此,答案为 5+4=95+4=9

4
1 1 1 1
212
10
1 2 4 8 16 32 64 128 256 512
880971923