执行时长 - 华为OD统一考试

OD统一考试(C卷)

分值: 100分

题解: Java / Python / C++

alt

题目描述

为了充分发挥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();}// 等待的任务数量int waitNum = 0;for (int taskNum : tasks) {// 每秒最多n个任务,执行不完则等待后续执行waitNum = Math.max(0, waitNum + taskNum - n);}// 计算任务执行完成// (waitNum + n - 1) / n  向上取整int costTime = taskLength + (waitNum + n - 1) / n;System.out.println(costTime);}
}

Python

# 最多一次执行任务数
n = int(input())
task_length = int(input())
tasks = list(map(int, input().split()))# 等待的任务数量
wait_num = 0
for task_num in tasks:# 每秒最多n个任务, 执行不完则等待后续执行wait_num = max(0, wait_num + task_num - n)# 计算任务执行完成
# (wait_num + n - 1) // n    向上取整的写法
cost_time = task_length + (wait_num + n - 1) // n
print(cost_time)

C++

#include <iostream>
#include <vector>using namespace std;int main() {// 最多一次执行任务数, 任务长度int n, taskLength;cin >> n >> taskLength;// 任务列表vector<int> tasks(taskLength);for (int i = 0; i < taskLength; i++) {cin >> tasks[i];}// 等待的任务数量int waitNum = 0;for (int taskNum : tasks) {// 每秒最多n个任务,执行不完则等待后续执行waitNum = max(0, waitNum + taskNum - n);}// 计算任务执行完成int costTime = taskLength + (waitNum + n - 1) / n;cout << costTime << endl;return 0;
}

‍❤️‍华为OD机试面试交流群每日真题分享): 加V时备注“华为od加群”

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/456484.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈交换原理(3)——交换网络

一、基本概念 交换网络是由若干个交换单元按照一定的拓扑结构和控制方式构成的网络。交换网络的三个基本要素是&#xff1a;交换单元、不同交换单元间的拓扑连接和控制方式。 1.1 单机交换网络与多级交换网络 交换网络按拓扑连接方式可分为&#xff1a;单级交换网络和多级交换网…

2024年对于Windows电脑,有类似的清理软件推荐吗?

对于Windows电脑&#xff0c;有很多类似的清理软件可以选择。以下是一些推荐的清理软件&#xff1a; CCleaner&#xff1a;这是一款非常受欢迎的Windows清理软件&#xff0c;它可以清理系统垃圾文件、浏览器缓存、无效注册表项等&#xff0c;还可以优化系统性能。CCleaner具有简…

【Qt学习笔记】(三)常用控件(持续更新)

Qt 常用控件 1 控件概述2 QWidget 控件核心属性2.1 enabled2.2 geometry2.3 window frame 的影响2.4 windowTitle2.5 window Icon2.6 windowOpacity2.7 cursor2.8 font2.9 toolTip2.10 focusPolicy2.11 stylesheet 1 控件概述 Widget是Qt中的核心概念英文原义是"小部件&q…

并发容器【ConcurentHashMap、CopyOnWriteArrayList、阻塞队列、ArrayBlockingQueue】

并发容器 什么是并发容器?同步容器:并发容器: ConcurrentHashMap结构图JDK1.7结构图JDK1.8结构图 CopyOnWriteArrayList实现原理 并发队列阻塞队列ArrayBlockingQueue 转自极客时间 什么是并发容器? 在JUC包中&#xff0c;有一大部分是关于并发容器的&#xff0c;如Concurr…

go语言每日一练——链表篇(六)

传送门 牛客面试必刷101题—— 判断链表中是否有环 牛客面试必刷101题—— 链表中环的入口结点 题目及解析 题目一 代码 package mainimport . "nc_tools"/** type ListNode struct{* Val int* Next *ListNode* }*//**** param head ListNode类* return bool…

亚信安慧AntDB构建繁荣生态的数据库管理系统

亚信安慧AntDB是一款数据库管理系统&#xff0c;它采用全球影响力大、社区繁荣、开放度高、生态增长迅速的PG内核。这款系统具有卓越的性能和稳定性&#xff0c;在全球范围内备受用户青睐。与此同时&#xff0c;AntDB的社区也是充满活力的&#xff0c;用户可以在社区中交流经验…

浅析一款非驱动考试网关程序(一)

前言 监考程序需要对网络流量进行过滤&#xff0c;不允许除了考试网站以外的其他网站的访问。其实就是实现了一个小型的网关程序&#xff0c;一般地有驱动实现和非驱动实现两种方式。本文只针对一款简易的非驱动实现的监考程序进行分析。 注意&#xff1a;本文通过对某考试监…

程序员要不要考PMP

程序员要不要考PMP&#xff0c;我的建议是NO。 当然了&#xff0c;公司需要的除外。 考证的目不外乎两个&#xff1a;学东西&#xff0c;拿证书。 这里有一个证书和PMP证书很有对比性&#xff1a;软考 对比如下&#xff1a; 1. 学东西 pmp 和软考内容基本是重合的。 2. 证书…

c#cad 创建-点(六)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 创建一个点的命令方法。代码的主要功能是在当前活动文档中创建一个点&#xff0c;并将其添加到模型空间块表记录中。 代码的主要步骤如下&#xff1a; 获取当前活动文档、数据库和编辑器对象。使用事务开始创建点的过程…

Docker进阶篇-CIG重量级监控系统

一、简介 通过docker stats命令可以很方便的查看当前宿主机上所有容器的CPU、内存、网络流量等数 据&#xff0c;可以满足一些小型应用。 但是docker stats统计结果只能是当前宿主机的全部容器&#xff0c;数据资料是实时的&#xff0c;没有地方存储、 没有健康指标过线预警…

Redis(十二)Bigkey

文章目录 游标案例生成100万测试数据key生产上限制keys */flushdb/flushall等危险命令不使用keys *&#xff1a;scan Biigkey案例多大算大发现bigkey渐进式删除生产调优示例问题 游标案例 生成100万测试数据key shell: for((i1;i<100*10000;i)); do echo "set k$i v…

基于CNN+LSTM深度学习网络的时间序列预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 卷积神经网络&#xff08;CNN&#xff09; 4.2 长短时记忆网络&#xff08;LSTM&#xff09; 4.3 CNNLSTM网络结构 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MA…