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++三种答案源码。

全部评论
学到了
点赞
送花
回复 分享
发布于 06-28 16:58 香港
哈哈,机考遇到了这道原题
点赞
送花
回复 分享
发布于 06-30 09:03 江苏
秋招专场
校招火热招聘中
官网直投
😄
点赞
送花
回复 分享
发布于 06-30 17:44 贵州

相关推荐

6 7 评论
分享
牛客网
牛客企业服务