3506:查找消除细菌菌株所需时间(★★)
目录
题目
给定一个整数数组 timeReq
和一个整数 splitTime
。
在人体微观世界中,免疫系统面临着一项非凡的挑战:对抗快速繁殖的细菌群落,这对身体的生存构成威胁。
最初,只部署一个 白细胞(WBC)来消除细菌。然而,单独的白细胞很快意识到它无法跟上细菌的生长速度。
WBC制定了一种巧妙的策略来对抗细菌:
- 第
i
个细菌菌株需要timeReq[i]
个时间单位来被消除。 - 单个白细胞只能消除 一个 细菌菌株。之后,白细胞耗尽,无法执行任何其他任务。
- 一个白细胞可以将自身分裂为两个白细胞,但这需要
splitTime
单位时间。一旦分裂,两个白细胞就可以 并行 消灭细菌。 - 一个白细胞仅可以攻击一个细菌菌株。多个白细胞不能同时攻击一个菌株。
您必须确定消除所有细菌菌株所需的 最短 时间。
注意,细菌菌株可以按任何顺序消除。
示例 1:
输入:timeReq = [10,4,5], splitTime = 2
输出:12
解释:
消除过程如下:
- 最初,有一个白细胞。经过 2 个时间单位后,白细胞分裂成 2 个白细胞。
- 其中一个白细胞在
t = 2 + 10 = 12
时间内消除菌株 0。另一个白细胞使用 2 个单位时间再次分裂。 - 2 个新的白细胞消灭细菌的时间是
t = 2 + 2 + 4
和t = 2 + 2 + 5
。
示例 2:
输入:timeReq = [10,4], splitTime = 5
输出:15
解释:
消除过程如下:
- 最初,有一个白细胞。经过 5 个时间单位后,白细胞分裂成 2 个白细胞。
- 2 个新的白细胞消灭细菌的时间是
t = 5 + 10
和t = 5 + 4
。
提示:
2 <= timeReq.length <= 105
1 <= timeReq[i] <= 109
1 <= splitTime <= 109
相似问题:
分析
- 与 1199 完全相同
解答
|
|
111 ms