AlgoMooc
← 返回题库

K0080. 魔法数据分配

中等通过率 50% · 提交 10 · 通过 5
贪心模拟排序数学

在小慕的研发实验室里,有三台核心处理设备:一台极速运算核心(加速卡)和两台标准处理单元(普通处理器)。它们需要共同完成一批数据任务的处理工作。 * 极速运算核心的处理速度为 `2` 单位/秒(每秒可以处理 2 单位的数据量)。 * 每台标准处理单元的处理速度为 `1` 单位/秒(每秒可以处理 1 单位的数据量)。 现在有一组数据任务 `tasks`,其中 `tasks[i]` 表示第 `i` 个任务的数据量(单位:数据单位)。 小慕需要为这些任务制定最优分配方案,遵循以下目标: 1. 首先,使所有任务完成的最短。 2. 如果存在多种最优方案,则选择其中极速运算核心承担的任务数最少的方案。 每个任务只能由其中一台设备负责,且处理过程中不可中断或转移。 最终输出结果为: * `minTime`:所有任务完成所需的最短总时长 * `coreTaskCount`:极速运算核心处理的任务数量 以 `[minTime, coreTaskCount]` 的形式返回答案。

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

输入描述

* 输入的第一行包含一个整数 `n`,表示任务数量。 * 输入的第二行包含 `n` 个整数,分别表示每个任务的能量大小。 * `0 < n <= 10` * `0 < tasks[i] < 2^31 - 1` 且保证所有 `tasks[i]` 为偶数 * 保证结果满足 `minTime < 2^31`

输出描述

* 输出两个整数,分别为 `minTime` 与 `dragonTaskCount`。

示例

示例 1

输入

8
6 10 14 8 12 20 16 18

输出

26 3

说明:* idx0: 6 → `2` (炼金师B) → 6 * idx1: 10 → `1` (炼金师A) → 10 * idx2: 14 → `0` (巨龙) → 14/2 = 7 * idx3: 8 → `2` (炼金师B) → 8 * idx4: 12 → `2` (炼金师B) → 12 * idx5: 20 → `0` (巨龙) → 20/2 = 10 * idx6: 16 → `1` (炼金师A) → 16 * idx7: 18 → `0` (巨龙) → 18/2 = 9 * 巨龙(0):`7 + 10 + 9 = 26`(承担任务数 `3` 个) * 炼金师A(1):`10 + 16 = 26` * 炼金师B(2):`6 + 8 + 12 = 26` 因此 `minTime = max(26, 26, 26) = 26`,`accelTaskCount = 3`。

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

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

登录后查看题目图解

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

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