题目描述:
为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务,假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成。
输入描述:
第一个参数为GPU一次最多执行的任务个数,取值范围[1, 10000]
第二个参数为任务数组长度,取值范围[1, 10000]
第三个参数为任务数组,数字范围[1, 10000]
输出描述:
执行完所有任务最少需要多少秒
示例1:
输入
3
5
1 2 3 4 5
输出
6
说明:一次最多执行3个任务,最少耗时6s
示例2:
输入
4
5
5 4 1 1 1
输出
5
说明:一次最多执行4个任务,最少耗时5s
C++源码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> tasks(m);
for (int i = 0; i < m; ++i) {
cin >> tasks[i];
}
int time = 0; // 总时间
int incompleteTasks = 0; // 未完成的任务数
for (int i = 0; i < m; ++i) {
incompleteTasks += tasks[i]; // 累加当前秒任务数到未完成任务中
// 检查是否超过最大处理能力
if (incompleteTasks > n) {
time++; // 增加时间
incompleteTasks -= n; // 减去已处理的任务数
}
else {
time++; // 即使任务数没超过限制,也至少需要1秒来处理
}
}
// 处理剩余未完成的任务
if (incompleteTasks > 0) {
time += incompleteTasks / n; // 完整批次处理时间
if (incompleteTasks % n != 0) {
time++; // 如果有剩余,再加1秒
}
}
cout << time-1 << endl;
system("pause");
return 0;
}