【华为OD】C卷真题 100%通过:执行时长 C/C++实现
目录
题目描述:
示例1
示例2
代码实现:
题目描述:
为了充分发挥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
代码实现:
#include <vector>
#include <iostream>
using namespace std;int getTimes(const vector<int> &arrays, const int num)
{int diss = 0, result = 0;for (int task : arrays) {if ((task + diss) > num) diss += (task - num);else diss = 0;++result;}result += (diss / num);if (diss % num) result++;return result;
}int main()
{int tCnt;int size;vector<int> arrays;cin >> tCnt >> size;for (int i = 0; i < size; ++i) {int val;cin >> val;arrays.push_back(val);}cout << getTimes(arrays, tCnt) << endl;return 0;
}