P1020日月风随solwind

时间限制 2000 ms内存限制 512 MiB通过率 —
显示算法标签单调栈 · 贪心

【题目背景】

修复系统后,tfbz 得知萨米旧都长期压迫并封锁星尘镇,于是决定与朋友们反抗暴政。为了联络外援,他必须解除山谷中的封锁,让隐藏的古道重新显现。

【题目描述】

山谷中依次排列着 nn 座风候台,从西向东编号为 1n1\sim n。第 ii 座风候台上系着一枚镇风结,这枚结最初的韧度为 hih_i

tfbz 走入山谷时,所有镇风结都牢牢束在风候台上,山谷中没有一丝风。只有将它们全部解开,风才能贯穿整条山谷,隐藏的古道也才会重新显现。

最直接的办法是逐一削弱这些镇风结。举行仪式前,tfbz 可以消耗行旅灵力削弱任意一枚尚未解开的镇风结。每消耗 11行旅灵力,这枚结的当前韧度减少 11;当韧度降至 00 时,它会被直接解开。

但若只依靠这种方法,tfbz 可能需要消耗大量灵力。风候台上留下的文字告诉他,在完成提前削弱后,他必须恰好举行一次名为“日月风随”的引风仪式。他需要选择一座仍系着镇风结的风候台,并投入一个正整数 xx行旅灵力,让强度为 xx 的风势首先冲击这枚结。

若一枚当前韧度为 hh 的镇风结受到强度为 yy 的风势:

  • h>yh>y 时,它的韧度减少 yy,风势不再从这个方向继续传播;
  • hyh\leq y 时,它会被解开,并向编号相差 11、且镇风结仍未解开的风候台传递强度为 h1h-1 的风势。

若某个方向上不存在相邻的风候台,或相邻风候台上的镇风结已经解开,风势便不能向这个方向传播。已经解开镇风结的风候台不会消失,它两侧的风候台也不会因此变得相邻。

一枚镇风结被解开时,产生的风势会分别尝试向左右两侧传播;两个方向上的传播互不替代。整个过程会持续到没有新的镇风结被解开为止。

这次行动的总消耗,等于仪式前使用的行旅灵力与举行引风仪式时投入的 xx 之和。tfbz 必须让所有镇风结在仪式结束时都已解开,才能带着同伴穿过重新显现的古道。他想知道,完成这一切至少需要消耗多少点行旅灵力

【输入格式】

从文件 solwind.in\textbf{\textit{solwind.in}} 中读入数据。

本题有多组测试数据。第一行一个正整数 TT,表示测试数据组数。

对于每组测试数据,第一行一个正整数 nn,表示风候台的数量。

第二行 nn 个正整数 h1,h2,,hnh_1,h_2,\ldots,h_n,其中 hih_i 表示第 ii 座风候台上镇风结的初始韧度。

【输出格式】

输出到文件 solwind.out\textbf{\textit{solwind.out}} 中。

对于每组测试数据,输出一个整数,表示 tfbz 最少需要消耗的行旅灵力

【样例 1 输入】

432 1 241 2 3 21752 4 3 2 1

【样例 1 输出】

4374

【说明/提示】

【样例 1 解释】

对于第一组测试数据,tfbz 可以先消耗 22行旅灵力,直接解开第 33 座风候台上的镇风结;随后选择第 11 座风候台,投入 x=2x=2行旅灵力举行引风仪式。第 11 枚镇风结解开后产生强度为 11 的风势,并继续解开第 22 枚镇风结,总消耗为 44

对于第二组测试数据,tfbz 无需提前削弱任何镇风结。选择第 33 座风候台并投入 x=3x=3行旅灵力后,风势可以向两侧传播并解开所有镇风结,因此答案为 33

【样例 2】

见选手目录下的 solwind/solwind2.in\textbf{\textit{solwind/solwind2.in}}solwind/solwind2.ans\textbf{\textit{solwind/solwind2.ans}}

该组样例符合测试点 161\sim 6 的数据范围。

【样例 3】

见选手目录下的 solwind/solwind3.in\textbf{\textit{solwind/solwind3.in}}solwind/solwind3.ans\textbf{\textit{solwind/solwind3.ans}}

该组样例符合测试点 7127\sim 12 的数据范围。

【样例 4】

见选手目录下的 solwind/solwind4.in\textbf{\textit{solwind/solwind4.in}}solwind/solwind4.ans\textbf{\textit{solwind/solwind4.ans}}

该组样例符合测试点 131913\sim 19 的数据范围。

【样例 5】

见选手目录下的 solwind/solwind5.in\textbf{\textit{solwind/solwind5.in}}solwind/solwind5.ans\textbf{\textit{solwind/solwind5.ans}}

该组样例符合测试点 202520\sim 25 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证:1T1041\leq T\leq 10^41n3×1051\leq n\leq 3\times 10^51hi1061\leq h_i\leq 10^6,且单个测试点内所有测试数据的 nn 之和不超过 3×1053\times 10^5

测试点编号TTnnn\sum nhih_i特殊性质
161\sim 63000\leq 30003000\leq 30003000\leq 3000106\leq 10^6
7127\sim 12104\leq 10^43×105\leq 3\times 10^53×105\leq 3\times 10^5106\leq 10^6
131913\sim 19104\leq 10^43×105\leq 3\times 10^53×105\leq 3\times 10^5100\leq 100
202520\sim 25104\leq 10^43×105\leq 3\times 10^53×105\leq 3\times 10^5106\leq 10^6

特殊性质:对于每组测试数据,均满足 h1=h2==hnh_1=h_2=\cdots=h_n

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解