题目描述
为了充分发挥GPU算力,
需要尽可能多的将任务交给GPU执行,
现在有一个任务数组,
数组元素表示在这1s内新增的任务个数,
且每秒都有新增任务,
假设GPU最多一次执行n个任务,
一次执行耗时1s,
在保证GPU不空闲的情况下,最少需要多长时间执行完成。
输入描述
第一个参数为GPU最多执行的任务个数,取值范围1 ~ 10000
第二个参数为任务数组的长度,取值范围1 ~ 10000
第三个参数为任务数组,数字范围1 ~ 10000
输出描述
执行完所有任务需要多少秒
输入输出案例
解题思路
想象为容器转移液体问题,即一次转移一份,容器容积给定,依次转移给定的的容量(列表元素),如果大于容器容积则多余的分给下一次转移,以此类推,计算转移完需要多少次
以上容器最大为3
1 <3 即1次完成,没有剩余
2 <3 即1次完成,没有剩余
3 =3 即1次完成,没有剩余
4 >3 即1次转移走3,剩余1下次转移
5 +1(上次剩余的)> 3 即1次转移走3, 最后剩余3只能再次转移
剩余3 转移1次 完成任务
总转移花费 6次
# !E:\pythonScript\venv python3
# -*- coding: utf-8 -*-
"""
Date: 2023/3/9
Time: 16:08
Author: kang
"""
n = int(input())
l = input()
sgroup = list(map(int, input().split()))
# print(sgroup)
time = 0 # 用于记录转移次数
more = 0 # 用于存放上次剩余量
for i in sgroup:
if i + more > n: # 判断本次和上次剩余和是否大于容积
more = i + more - n # 本次剩余量
else:
more = 0
time += 1
while more > 0: # 最后剩余量需要次数
more -= n
time += 1
print(time)