QOJ.ac

QOJ

Limite de temps : 30 s Limite de mémoire : 1024 MB Points totaux : 22

#11468. 煎饼金字塔

Statistiques

你刚刚为一些食客烹饪完了煎饼。总共有 $S$ 叠煎饼,你将它们排成一行,使得从左往右数第 $i$ 叠(从 1 开始计数)有 $P_i$ 个煎饼。

你的主管正准备把这些煎饼端给顾客,但她突然想到,给这些煎饼拍张照可能是一个很好的广告。然而,她担心煎饼叠数太多,所以她打算移除最左边的 $L$ 叠和最右边的 $R$ 叠,其中 $L$ 和 $R$ 是非负整数,且满足 $L + R \le S - 3$。(注意,移除后至少会剩下 3 叠煎饼。)

你的主管还认为,如果剩下的煎饼叠具有“金字塔属性”,看起来会赏心悦目。一个包含 $N$ 叠煎饼的序列 $H_1, H_2, \dots, H_N$ 具有金字塔属性,如果存在一个整数 $j$ ($1 \le j \le N$),使得 $H_1 \le H_2 \le \dots \le H_{j-1} \le H_j$ 且 $H_j \ge H_{j+1} \ge \dots \ge H_{N-1} \ge H_N$。(这个序列可能看起来不像典型的“金字塔”——例如,一组高度相同的煎饼叠具有金字塔属性,高度从左到右非递减的序列也具有金字塔属性,等等。)

注意,主管移除最左边的 $L$ 叠和最右边的 $R$ 叠后剩下的煎饼序列可能还不具备金字塔属性……但你可以通过给其中一叠或多叠煎饼增加煎饼数量来修复它!一个煎饼序列的“金字塔化成本”是指为了使该序列具有金字塔属性,必须增加的煎饼总数最小值。

当你的主管正在仔细决定选择哪些 $L$ 和 $R$ 的值时,你开始好奇所有合法的 $L$ 和 $R$ 选择下的金字塔化成本之和是多少。请计算这个总和,并对质数 $10^9+7$ ($1000000007$) 取模。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含一个整数 $S$:煎饼叠的总数。接下来一行包含 $S$ 个整数 $P_1, P_2, \dots, P_S$,其中第 $i$ 个数表示从左往右数第 $i$ 叠煎饼的数量。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是所有合法 $L$ 和 $R$ 选择下的金字塔化成本之和,对质数 $10^9+7$ ($1000000007$) 取模的结果。

数据范围

$1 \le T \le 100$ $1 \le P_i \le 10^9$,对于所有 $i$。

样例

样例输入 1

3
3
2 1 2
5
1 6 2 5 7
4
1000000000 1 1 1000000000

样例输出 1

Case #1: 1
Case #2: 16
Case #3: 999999991

说明

在样例 1 中,主管必须选择 $L = 0$ 且 $R = 0$,这是你唯一需要考虑的情况。该情况下的最优策略是在中间那叠煎饼上增加一个煎饼。虽然得到的序列看起来是平的,但它确实具有金字塔属性;事实上,任何索引都可以作为 $j$ 的值。

在样例 2 中,以下是所有可能的 $L$ 和 $R$ 选择、对应的剩余煎饼序列以及每种情况下的操作:

  • $L = 0, R = 0$:$H = [1, 6, 2, 5, 7]$。最优解是在第三叠增加 4 个煎饼,在第四叠增加 1 个煎饼。得到 $[1, 6, 6, 6, 7]$,它在 $j = 5$ 时具有金字塔属性。
  • $L = 0, R = 1$:$H = [1, 6, 2, 5]$。最优解是在第三叠增加 3 个煎饼。得到 $[1, 6, 5, 5]$,它在 $j = 2$ 时具有金字塔属性。
  • $L = 0, R = 2$:$H = [1, 6, 2]$。它在 $j = 2$ 时已经具有金字塔属性。
  • $L = 1, R = 0$:$H = [6, 2, 5, 7]$。最优解是在第二叠增加 4 个煎饼,在第三叠增加 1 个煎饼。得到 $[6, 6, 6, 7]$,它在 $j = 4$ 时具有金字塔属性。
  • $L = 1, R = 1$:$H = [6, 2, 5]$。最优解是在第二叠增加 3 个煎饼。得到 $[6, 5, 5]$,它在 $j = 1$ 时具有金字塔属性。
  • $L = 2, R = 0$:$H = [2, 5, 7]$。它在 $j = 3$ 时已经具有金字塔属性。

因此答案是 $(5 + 3 + 0 + 5 + 3 + 0)$ 对 $(10^9 + 7)$ 取模,即 16。

在样例 3 中,我们只需要在 $L = 0$ 且 $R = 0$ 时增加额外的煎饼来创造金字塔属性。在这种情况下,最优策略是给第二叠和第三叠各增加 999999999 个煎饼。(希望食客们胃口够好!)因此答案是 $(999999999 + 999999999)$ 对 $(10^9 + 7)$ 取模,即 999999991。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.