AlgoMooc
← 返回题库

K0077. 节点关闭就近分配

困难通过率 90% · 提交 10 · 通过 9
动态规划前缀和枚举贪心2508

小慕正在规划一条东西走向的“星辰走廊”,走廊上分布着若干个项目节点,每个节点上有一定数量的团队成员,人数记录在数组 `mages` 中。为了方便团队快速跨节点协作,小慕计划在部分节点上设置协作中心。 然而,由于预算有限,小慕必须关闭 `banNum` 个节点的协作中心。这些被关闭的节点上的团队成员,需要前往的、仍然开放的协作中心,通过步行完成转移。 请你帮助小慕规划协作中心的分布,使得所有团队成员最少,并输出这个最小的总数。

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

输入描述

* 第一行输入一个整数 `n`,表示聚集点的数量,满足 `1 <= n <= 100`。 * 第二行输入 `n` 个整数,`mages[i]` 表示第 `i` 个聚集点的冒险者人数,满足 `0 <= mages[i] <= 10^5`。 * 第三行输入一个整数 `banNum`,表示需要关闭传送阵的聚集点数量,满足 `0 <= banNum <= min(6, n - 1)`。

输出描述

* 输出一个整数,表示**最少的步行区间总数**。

示例

示例 1

输入

5
12 7 15 4 3
2

输出

10

说明:关闭下标为 `3` 和 `4` 的传送阵: * 下标 3 的冒险者:步行 `1` 个区间到下标 2,贡献 `4×1 = 4`; * 下标 4 的冒险者:步行 `2` 个区间到下标 2,贡献 `3×2 = 6`; * 总计 `4 + 6 = 10`

示例 2

输入

7
5 4 5 4 6 7 9
3

输出

14

说明:一种可行的最优方案:关闭下标为 `0`、`2`、`3` 的传送阵: * 下标 0:步行 `1` 个区间,贡献 `5×1 = 5`; * 下标 2:步行 `1` 个区间,贡献 `5×1 = 5`; * 下标 3:步行 `1` 个区间,贡献 `4×1 = 4`; * 合计 `5 + 5 + 4 = 14`。

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

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。