atcoder#AGC028B. [AGC028B] Removing Blocks
[AGC028B] Removing Blocks
得分 : 分
问题描述
有 个块沿一排排列,从左到右编号为 到 。
每个块都有一个重量,块 的重量为 。
Snuke 将对这些块进行 次操作:
- 选择一个仍未被移除的块,并将其移除。
此操作的成本为与被移除块相连的块的重量之和(包括它自身)。
在这里,两个块 和 ()被称为 连接,当且仅当,对于所有 (),块 仍未被移除。
有 种可能的顺序,Snuke 可以移除这些块。
对于所有这些 种顺序,计算 次操作的总成本,并求出这些 个总成本的和。
由于答案可能非常大,计算和对 取模。
约束条件
- 输入中的所有值都是整数。
输入
输入通过标准输入给出,格式如下:
输出
对于所有 种顺序,找到 次操作的总成本,并输出这些 个总成本的和,取模 。
2
1 2
9
首先,我们考虑顺序 “块 -> 块 ”。
在第一次操作中,操作的成本为 ,因为块 和 是连接的。
在第二次操作中,操作的成本为 ,因为只剩下块 。
因此,这个顺序的两个操作的总成本为 。
然后,我们考虑顺序 “块 -> 块 ”。
在第一次操作中,操作的成本为 ,因为块 和 是连接的。
在第二次操作中,操作的成本为 ,因为只剩下块 。
因此,这个顺序的两个操作的总成本为 。
因此,答案为 。
4
1 1 1 1
212
10
1 2 4 8 16 32 64 128 256 512
880971923