#CF2234F. 容器、高度与两个版本(困难版) / Vessels, Heights and Two Versions (Hard Version)
容器、高度与两个版本(困难版) / Vessels, Heights and Two Versions (Hard Version)
F. Vessels, Heights and Two Versions (Hard Version)
题目描述
本题是困难版本。两个版本的区别在于本题中 和测试点数量的限制更大。只有当你通过了所有版本的题目后才能对他人进行 hack。
有 个无限高的连通容器排成一个圆环。每个容器的底面积为 cm,在第 个容器与第 个容器之间存在一个体积可忽略的连接口,其高度为 cm。对于每个容器 ,求在保证第 个容器保持为空的前提下,这些容器中最多能装入多少总体积的水(单位 cm)。
形式化地,给定一个数组 。一个循环的非负整数数组 被称为「合法的」,当且仅当满足以下条件:
- 对于每个 (),如果 ,则必有 。换言之,如果数组 中两个相邻元素的最大值超过了数组 中对应的元素,那么这两个相邻元素必须相等。
对于每个 (),在所有满足 的合法数组 中,输出可能的最大和 。
输入格式
每个测试包含多个测试点。第一行包含测试点数量 ()。随后是每个测试点的描述。
每个测试点的第一行包含一个整数 ()— 容器的数量。
每个测试点的第二行包含 个整数 ()— 容器之间隔板的高度。
保证所有测试点的 之和不超过 。
输出格式
对于每个测试点,输出 个整数 — 第 个整数表示在保持第 个容器为空的前提下,容器中最多能装入的总体积(cm)。
4
4
1 2 3 4
5
5 3 1 5 2
6
3 4 2 6 1 5
7
1 2 1 4 2 3 5
6 6 7 9
17 16 14 14 17
21 21 20 20 21 21
17 17 17 17 21 21 22
提示
考虑第一个测试点。
- 为保持容器 为空,一个合法数组是 ,总水量为 cm。
- 为保持容器 为空,一个合法数组是 ,总水量为 cm。
- 为保持容器 为空,一个合法数组是 ,总水量为 cm。
- 为保持容器 为空,一个合法数组是 ,总水量为 cm。
例如,数组 不合法,因为 ,因此必须满足 。
可以证明,上述每个数组在所有可行方案中具有最大可能的总和。