执行时长 - 华为OD统一考试(D卷)
OD统一考试(D卷)
分值: 100分
题解: Java / Python / C++
题目描述
为了充分发挥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。
题解
这个问题可以使用贪心策略来解决。
主要思路是遍历任务数组,每秒执行尽可能多的任务,然后根据剩余任务数量计算等待时间。
Java
import java.util.Scanner;
/**
* @author code5bug
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 最多一次执行任务数, 任务长度
int n = scanner.nextInt(), taskLength = scanner.nextInt();
// 任务列表
int[] tasks = new int[taskLength];
for (int i = 0; i < taskLength; i++) {
tasks[i] = scanner.nextInt();
}
// 等
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2024华为OD机试真题题解 文章被收录于专栏
华为OD机考(C卷、D卷)算法题库(绝对都是原题),帮助你上岸华为(已经不少小伙伴成功上岸)。提供Java、Python、C++ 三种语言的解法。每篇文章都有详细的解题步骤、代码注释详细及相关知识点的练习题。有问题,随时解答。 从 2024年4月24开始,考的都是华为OD统一考试(D卷),据已经参加D卷考试的同学反馈D卷和C卷是一样的,如果发现新题会及时更新。