AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

K0064. 神秘宝藏洞穴中的宝箱

困难通过率 54% · 提交 26 · 通过 14
动态规划贪心模拟数学

在一个项目中,小慕负责清理一组按顺序排列的数据节点,每个节点存储了一个整数值,由数组 `treasures` 表示。小慕有一个特殊的处理工具,可以一次性处理多个节点并提取其中的值。 这个工具的工作方式如下: 1. 每次操作可以选择以下两种方式之一: - 从最前面的三个节点中挑选任意两个节点处理,提取它们的值。操作的代价为这两个节点中值的最大值。 - 如果剩余的节点数量少于三个,那么就一次性把所有剩余节点处理掉,提取它们的值。操作的代价为剩余节点中值的最大值。 2. 每次操作后,工具会移除已处理的节点,剩余的节点继续按顺序等待下一次操作。 小慕需要计算出清空所有节点并提取其中值所需的最小代价。

提示:带虚线的词点一下有通俗解释。

输入描述

- 第一行包含一个整数 `n`,表示宝箱的数量,`1 <= n <= 1000`。 - 第二行包含 `n` 个整数 `treasures[0], treasures[1], ..., treasures[n-1]`,其中 `1 <= treasures[i] <= 10^6`。

输出描述

- 输出一个整数,表示清空所有宝箱并拿走里面宝石所需的最小代价。

示例

示例 1

输入

4
6 2 8 4

输出

12

说明:- 初始时,`treasures = [6, 2, 8, 4]`。 - 在第一次操作中,移除 `treasures[0] = 6` 和 `treasures[2] = 8`,操作成本为 `max(6, 8) = 8`。现在,`treasures = [2, 4]`。 - 在第二次操作中,移除剩余元素,操作成本为 `max(2, 4) = 4`。 - 移除所有元素的成本为 `8 + 4 = 12`,这是移除 `treasures` 中所有元素的最小成本。所以输出 `12`。

示例 2

输入

4
2 1 3 3

输出

5

说明:- 初始时,`treasures = [2, 1, 3, 3]`。 - 在第一次操作中,移除 `treasures[0] = 2` 和 `treasures[1] = 1`,操作成本为 `max(2, 1) = 2`。现在,`treasures = [3, 3]`。 - 在第二次操作中,移除剩余元素,操作成本为 `max(3, 3) = 3`。 - 移除所有元素的成本为 `2 + 3 = 5`,这是移除 `treasures` 中所有元素的最小成本。所以输出 `5`。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
示例:treasures = [6, 2, 8, 4] 的最小代价过程 初始: 6 2 8 4 选6和8 第一次后: 2 4 代价 = max(6,8) = 8 全部取走 第二次后: 代价 = max(2,4) = 4 总代价 = 8 + 4 = 12
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「神秘宝藏洞穴中的宝箱」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。