华为OD机考:OD统一考试D卷+C卷+A卷+B卷+刷题OJ
真题目录:华为OD机考机试 真题目录( D卷 +C卷 + B卷 + A卷) + 考点说明
在线OJ:点击立即刷题,模拟真实机考环境
华为OD面试真题精选:华为OD面试真题精选
题目描述
为了充分发挥GPU[算力],需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。
假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成。
输入描述
- 第一个参数为GPU一次最多执行的任务个数,取值范围[1, 10000]
- 第二个参数为任务数组长度,取值范围[1, 10000]
- 第三个参数为任务数组,数字范围[1, 10000]
输出描述
执行完所有任务最少需要多少秒。
用例
输入 | 3 5 1 2 3 4 5 |
---|---|
输出 | 6 |
说明 | 一次最多执行3个任务,最少耗时6s |
输入 | 4 5 5 4 1 1 1 |
---|---|
输出 | 5 |
说明 | 一次最多执行4个任务,最少耗时5s |
C++
#include <iostream>
using namespace std;
int main() {
int maxTasks;
cin >> maxTasks;
int taskArrLen;
cin >> taskArrLen;
int* taskArr = new int[taskArrLen];
for (int i = 0; i < taskArrLen; i++) {
cin >> taskArr[i];
}
int currentTasks = 0;
int time = 0;
int index = 0;
while (currentTasks != 0 || index != taskArrLen) {
if (index < taskArrLen) {
currentTasks += taskArr[index];
index++;
}
currentTasks -= maxTasks;
if (currentTasks < 0) currentTasks = 0;
time++;
}
cout << time << endl;
delete[] taskArr;
return 0;
}