AlgoMooc
← 返回题库

K0086. 魔力水晶核心

困难通过率 70% · 提交 10 · 通过 7
贪心模拟枚举排序

在「小慕」负责的一个数据中心里,有若干台计算节点,每台节点都在持续运行各种服务(例如缓存服务、图像渲染、模拟计算等)。 第 `i` 台节点当前承载的服务数记录在数组 `currentLoad[i]` 中。 每台节点的最大服务承载能力为 `maxCapacity`。 若某节点的服务数等于 `maxCapacity`,则称其为满载节点。 小慕即将部署 `extraTasks` 个新的服务任务(这些任务也可以选择不全部部署)。 由于系统架构限制,已有任务不能终止,也不能在节点间迁移。 你需要决定如何将这些新任务分配给各节点,以最大化数据中心的平衡。 评估值由以下两部分组成: 1. 满载得分: 满载节点的数量 × `weightFull` 2. : 在未满载的节点中,找出当前服务数最少的节点,其服务数 × `weightLow` 若所有节点都满载,则此项得分为 0。 请你计算,小慕能够获得的最大评估值是多少。

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

输入描述

输入包含五行: ``` n currentLoad[1] currentLoad[2] ... currentLoad[n] maxCapacity extraTasks weightFull weightLow ``` 其中: - `1 <= n <= 10^4` - `1 <= currentLoad[i] <= maxCapacity <= 10^3` - `1 <= extraTasks <= 10^10` - `1 <= weightFull <= 10^4` - `1 <= weightLow <= 10^4`

输出描述

输出一个整数,表示可获得的最大评估值。

示例

示例 1

输入

5
2 5 3 5 4
5
4
10 2

输出

46

说明:样例说明: - 共有 5 个核心,最大承载 maxCapacity = 5。 - 当前负载为 [2, 5, 3, 5, 4],其中已有 2 个核心满载。 - 可额外分配 4 个新任务。 最佳方案: - 让核心 1、5 各补到满载(需 3 + 1 = 4 个任务,刚好用完)。 - 此时 4 个核心满载。 - 得分 = 4 * 10 + 3 * 2 = 46。

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

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

登录后查看题目图解

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

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