有 n 名人员在一个营地,他们需要使用一艘船过河到达目的地。这艘船一次最多可以承载 k 人。渡河过程受到环境条件的影响,这些条件以 周期性 的方式在 m 个阶段内变化。
每个阶段 j 都有一个速度倍率 mul[j]:
mul[j] > 1,渡河时间会变长。mul[j] < 1,渡河时间会缩短。每个人 i 都有一个划船能力,用 time[i] 表示,即在中性条件下(倍率为 1 时)单独渡河所需的时间(以分钟为单位)。
规则:
j 出发的一组人 g 渡河所需的时间(以分钟为单位)为组内成员的 最大 time[i],乘以 mul[j] 。d,阶段会前进 floor(d) % m 步。r,返回所需时间为 time[r] × mul[current_stage],记为 return_time,阶段会前进 floor(return_time) % m 步。返回将所有人渡河所需的 最少总时间 。如果无法将所有人渡河,则返回 -1。
示例 1:
输入: n = 1, k = 1, m = 2, time = [5], mul = [1.0,1.3]
输出: 5.00000
解释:
5 × 1.00 = 5.00 分钟。5.00 分钟。示例 2:
输入: n = 3, k = 2, m = 3, time = [2,5,8], mul = [1.0,1.5,0.75]
输出: 14.50000
解释:
最佳策略如下:
max(2, 8) × mul[0] = 8 × 1.00 = 8.00 分钟。阶段前进 floor(8.00) % 3 = 2 步,下一个阶段为 (0 + 2) % 3 = 2。2 × mul[2] = 2 × 0.75 = 1.50 分钟。阶段前进 floor(1.50) % 3 = 1 步,下一个阶段为 (2 + 1) % 3 = 0。max(2, 5) × mul[0] = 5 × 1.00 = 5.00 分钟。阶段前进 floor(5.00) % 3 = 2 步,最终阶段为 (0 + 2) % 3 = 2。8.00 + 1.50 + 5.00 = 14.50 分钟。示例 3:
输入: n = 2, k = 1, m = 2, time = [10,10], mul = [2.0,2.0]
输出: -1.00000
解释:
-1.00。
提示:
1 <= n == time.length <= 121 <= k <= 51 <= m <= 51 <= time[i] <= 100m == mul.length0.5 <= mul[i] <= 2.0