题目
为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。
假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成。
题目输入
- 第一个参数为GPU一次最多执行的任务个数,取值范围[1, 10000]
- 第二个参数为任务数组长度,取值范围[1, 10000]
- 第三个参数为任务数组,数字范围[1, 10000]
题目输出
- 执行完所有任务最少需要多少秒。
实例
3
5
1 2 3 4 5
第1s:处理1
第2s:处理2
第3s:处理3
第4s:处理3,剩余4-3=1
第5s:处理3,剩余5+1-3=3
第5s:执行3,剩余3-3=0 ------结束
输出:6
4
5
5 4 1 1 1
第1s:处理4,剩余5-4=1
第2s:处理4,剩余4+1-4=1
第3s:处理2,剩余1+1
第4s:处理1,
第5s:处理1,
第5s:执行1, ------结束
输出:5
题目解析
题目
题目代码
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
vector<int> nums(m);
for(int i = 0; i < m; i++){
cin >> nums[i];
}
int residue = 0;
for(auto num:nums){
if(residue + num <= n){
residue = 0;
}else if(residue + num > n){
residue += num - n;
}
}
cout << m + (residue + n -1)/n;//m+向上取整
return 0;
}