AT_agc028_b [AGC028B] Removing Blocks
题目描述
有 $N$ 个方块从左到右排成一排,编号为 $1$ 到 $N$。每个方块都有一个权重,第 $i$ 个方块的权重为 $A_i$。Snuke 将对这些方块执行 $N$ 次如下操作:
- 每次选择一个尚未被移除的方块并将其移除。该操作的代价是与被移除方块相连的所有方块的权重之和(包括其本身)。这里,若两个方块 $x$ 和 $y$($x \leq y$)之间的所有方块 $z$($x \leq z \leq y$)都尚未被移除,则称 $x$ 和 $y$ 是**相连**的。
Snuke 可以以 $N!$ 种不同的顺序移除这些方块。请你对所有这 $N!$ 种移除顺序,计算每种顺序下所有操作的总代价,并求出这些总代价之和。由于答案可能非常大,请对 $10^9+7$ 取模后输出。
输入格式
输入从标准输入读取,格式如下:
第一行一个正整数 $N$。
第二行 $N$ 个正整数 $A_1,A_2\cdots A_n$。
输出格式
对于所有 $N!$ 种移除顺序,输出每种顺序下操作总代价之和的总和,对 $10^9+7$ 取模后输出。
说明/提示
### 样例解释 1:
首先,我们考虑顺序为“方块 $1$ -> 方块 $2$”。在第一次操作中,由于方块 $1$ 和 $2$ 是相连的,操作代价为 $1+2=3$。在第二次操作中,只剩下方块 $2$,代价为 $2$。因此,该顺序下两次操作的总代价为 $3+2=5$。
然后,我们考虑顺序为“方块 $2$ -> 方块 $1$”。在第一次操作中,方块 $1$ 和 $2$ 是相连的,操作代价为 $1+2=3$。在第二次操作中,只剩下方块 $1$,代价为 $1$。因此,该顺序下两次操作的总代价为 $3+1=4$。
所以,答案为 $5+4=9$。
### 数据范围
- $ 1 \leq N \leq 10^5 $
- $ 1 \leq A_i \leq 10^9 $