2024年华为OD机试真题-执行时长
华为OD机试真题-执行时长-2024年OD统一考试(D卷)
题目描述:
为了充分发挥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
解题思路:
(1)我们需要逐秒地处理任务数组中的任务,并跟踪未完成的任务数。
(2)如果在某一秒内的总任务数(包括未完成任务)超过GPU一次能处理的最大任务数,我们需要增加1秒的时间,并减少处理的任务数。
(3)如果总任务数不超过最大任务数,我们也需要增加1秒的时间,但所有任务都能在这一秒内完成。
(4)在任务数组处理完后,如果还有未完成的任务,计算完成剩余任务所需的时间,并加到总时间上。
c++解法:
#include <iostream> using namespace std; int main() { int n, size; cin >> n >> size; int a = 0; int ans = size; int tmp; int i = 0; while(i < size) { cin >> tmp; a += tmp; if(a < n) a = 0; else a -= n; i++; } ans += a/n; if(a%n != 0) ans ++; cout<<ans; return 0; }
Java解法:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 输入GPU一次最多执行的任务个数 int maxTasks = scanner.nextInt(); // 输入任务数组的长度 int numTasks = scanner.nextInt(); // 输入任务数组 int[]
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
华为OD机试题库2024年 文章被收录于专栏
2024年OD统一考试(D卷),最新最完整题库。 收录130+道真题,提供解题思路,Java/Python/C++三种答案源码。