为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务,假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成
输入描述:
第一个参数为GPU一次最多执行的任务个数,取值范围[1, 10000]
第二个参数为任务数组长度,取值范围[1, 10000]
第三个参数为任务数组,数字范围[1, 10000]输出描述:
执行完所有任务最少需要多少秒
输入:
3
5
1 2 3 4 5
输出:
6
解题思路:
遍历任务数组,如果任务数+当前剩余任务大于单次处理任务数m,时长+1,剩余任务数more = task + more - m,如果任务数+当前剩余任务小于单次处理任务数m,则全部执行,more = 0,时长+1。最后遍历完,如果还有剩余的任务,则继续执行
手撕代码:
m = int(input())
n = int(input())
tasklist = list(map(eval,input().strip().split()))
time = 0#记录时长
more = 0#记录当前剩余任务数
for task in tasklist:
if task + more > m:#遍历任务数组,如果任务数+当前剩余任务大于单次处理任务数m,时长+1,算出剩余任务数
more = task + more - m
else:
more = 0
time += 1
while more > 0:#遍历完,如果还有剩余的任务,则继续执行
more -= m
time += 1
print(time)