华为OD机试 - 流水线 - 逻辑分析(Java 2023 B卷 100分)

news2024/11/26 21:52:32

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
      • 1、输入
      • 2、输出
      • 3、说明
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

一个工厂有 m 条流水线,来并行完成 n 个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业。现给定流水线个数 m,需要完成的作业数 n,每个作业的处理时间分别为 t1.t2…tn。请你

编程计算处理完所有作业的耗时为多少?

当 n>m 时,首先处理时间短的 m 个作业进入流水线,其他的等待,当某个作业完成时,依次从剩余作业中取处理时间最短的进入处理。

二、输入描述

第一行为2 个整数 (采用空格分隔),分别表示流水线个数 m 和作业数 n;

第二行输入 n个整数 (采用空格分隔) ,表示每个作业的处理时长 t1,t2…tn。

0< m,n<100,0<t1,t2…tn<100.

注:保证输入都是合法的

三、输出描述

输出处理完所有作业的总时长。

1、输入

3 5
8 4 3 2 10

2、输出

13

3、说明

  1. 先安排时间为2、3、4的三个作业;
  2. 第一条流水线先完成作业,然后调度剩余时间最短的作业8;
  3. 第二条流水线完成作业,然后调度剩余时间最短的作业10;
  4. 总耗时就是第二条流水线完成作业的时间

四、解题思路

  1. 将每个作业的处理时长有小到大排序;
  2. 每条流水线依次处理时长小的作业,其它的作业等待;
  3. 当第一条作业完成后,再完成剩余的作业中处理时间最小的作业;
  4. 依次类推;
  5. 总耗时就是最后一个作业所对应的流水线的总耗时。

五、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int[] line = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        // 流水线个数 m
        int m = line[0];
        // 作业数 n
        int n = line[1];

        // 每个作业的处理时长
        int[] timeArr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

        // 有小到大排序
        Arrays.sort(timeArr);

        /**
         * 特殊情况:
         * 流水线 大于等于 独立的作业时,可以直接处理,不需要等待排队
         * 直接返回独立作业最长的处理时间即可
         */
        if (m >= n) {
            System.out.println(timeArr[timeArr.length - 1]);
            return;
        }

        // 当 n>m 时,首先处理时间短的 m 个作业进入流水线,其他的等待
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < timeArr.length; i++) {
            // m条流水线同时处理作业
            int key = i % m;
            map.put(key, map.getOrDefault(key, 0) + timeArr[i]);
        }

        // 处理完所有作业的总时长
        int sum = 0;
        for (Integer value : map.values()) {
            sum = Math.max(sum, value);
        }
        // 输出处理完所有作业的总时长
        System.out.println(sum);
    }
}

六、效果展示

1、输入

4 6
10 20 15 12 8 9

2、输出

29

3、说明

  • 10 20 15 12 8 9从小到大排序,8 9 10 12 15 20
  • 一共4条流水线,先完成8 9 10 12;
  • 第一条流水线先完成作业,然后调度剩余时间最短的作业15;
  • 第二条流水线完成作业,然后调度剩余时间最短的作业20;
  • 总耗时就是第二条流水线完成作业的时间29。

在这里插入图片描述


🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业部署了MES管理系统为什么还要APS

在制造企业中&#xff0c;MES制造执行系统和高级计划与排程系统&#xff08;APS&#xff09;是两大核心的制造运营管理软件。尽管MES管理系统在工厂层面对生产活动进行实时监控和优化&#xff0c;但APS在更高的战略层面对生产和供应链进行规划和管理。因此&#xff0c;即使企业…

软件系统的验收方法

软件系统的验收是确保软件按照规格要求并满足用户需求的过程。验收过程通常涉及与项目利益相关者&#xff08;包括客户、用户和项目团队&#xff09;一起进行各种测试和评估。以下是一些常见的软件系统验收方法&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#…

操作系统备考学习 day4 (2.1.7 - 2.2.4)

操作系统备考学习 day4 二、进程与线程2.1 进程与线程2.1.7 线程的状态与转换 2.2 处理机调度2.2.1 调度的概念、层次2.2.2 进程调度的时机切换与过程调度的方式2.2.3 调度器、闲逛进程2.2.4 调度算法的评价指标 二、进程与线程 2.1 进程与线程 2.1.7 线程的状态与转换 线程…

STM32 CAN使用记录:FDCAN基础通讯

文章目录 目的基础说明关键配置与代码轮询方式中断方式收发测试 示例链接总结 目的 CAN是非常常用的一种数据总线&#xff0c;被广泛用在各种车辆系统中。这篇文章将对STM32中FDCAN的使用做个示例。 CAN的一些基础介绍与使用可以参考下面文章&#xff1a; 《CAN基础概念》htt…

芯科蓝牙BG27开发笔记9-蓝牙温控器例程阅读

源码&#xff1a; https://download.csdn.net/download/hxkrrzq/88353283 以上源码都是官方资源&#xff0c;可以自行gitbub下载&#xff08;参见之前笔记&#xff09; 蓝牙广播格式化 之前的笔记中广播数据是直接使用的十六进制字符串&#xff0c;关于这32bytes数据的格式化…

算法通关村-----链表中环的问题

环形链表 问题描述 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中…

MySQL 索引分类

文章目录 MySQL 索引分类1、按存储方式区分&#xff08;1&#xff09;BTree 索引1、BTree2、BTree3、BTree 个 BTree 的主要区别4、MySQL为什么选择BTree &#xff08;2&#xff09;哈希索引1、哈希索引的特点 2、使用逻辑区分&#xff08;1&#xff09;普通索引&#xff08;2&…

【SpringMVC】文件上传与下载、JREBEL使用

目录 一、引言 二、文件的上传 1、单文件上传 1.1、数据表准备 1.2、添加依赖 1.3、配置文件 1.4、编写表单 1.5、编写controller层 2、多文件上传 2.1、编写form表单 2.2、编写controller层 2.3、测试 三、文件下载 四、JREBEL使用 1、下载注册 2、离线设置 一…

ChatGLM HuggingFace大语言模型底座

基础介绍 HuggingFace 是一家专注于自然语言处理(NLP)、人工智能和分布式系统的创业公司,创立于2016年。最早是主营业务是做闲聊机器人,2018年 Bert 发布之后,他们贡献了一个基于 Pytorch 的 Bert 预训练模型,即 pytorch-pretrained-bert,大受欢迎,进而将重心转向维护 …

云HIS医院信息化系统:集团化管理,多租户机制,满足医院业务需求

随着云计算、大数据、物联网等新兴技术的迅猛发展&#xff0c;HIS模式的理念、运行机制更新&#xff0c;衍生出了新的HIS模式——云HIS。云HIS是基于云计算、大数据、互联网等高新技术研发的医疗卫生信息平台&#xff0c;它实现了医院信息化从局域网向互联网转型&#xff0c;并…

Python函数进阶:探索高级函数特性与技巧

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 Python中的函数不仅仅是…

关于安卓SVGA浅尝(二)加载数据

关于安卓SVGA浅尝&#xff08;二&#xff09;加载数据 相关链接 SVGA官网 SVGA-github说明文档 背景 项目开发&#xff0c;都会和动画打交道&#xff0c;动画的方案选取&#xff0c;就有很多选择。如Json动画&#xff0c;svga动画&#xff0c;gif等等。各有各的优势。目前项…

PHP8的类与对象的基本操作之成员方法-PHP8知识详解

成员方法是指在类中声明的函数。 在类中可以声明多个函数&#xff0c;所以对象中可以存在多个成员方法。类的成员方法可以通过关键字进行修饰&#xff0c;从而控制成员方法的商用权限。 函数和成员方法唯一的区别就是&#xff0c;函数实现的是某个独立的功能&#xff0c;而成…

Zero-Shot 使用简单两层网络不用训练就能进行图像恢复

文章 今天要分享的文章是CVPR2023比较有意思的一篇《Zero-Shot Noise2Noise: Efficient Image Denoising without any Data》&#xff0c;通过简单的两层网络&#xff0c;并且不需要数据训练直接进行图像恢复 代码 https://colab.research.google.com/drive/1i82nyizTdszyHk…

Linux内存管理--smaps文件详解

swaps文件是Linux的proc文件系统提供的查看系统下运行进程内存使用情况的方法&#xff0c;Linux给每个进程都提供了一个这样的文件&#xff0c;学会查看并分析swaps文件有助于定位和解决诸如内存泄漏、性能瓶颈等内存资源相关问题。 一、内存的两个概念 了解smaps文件之前&…

MySQL 索引(一)

1.数据访问方式 在 MySQL 中&#xff0c;通常有两种方式访问数据库表的行数据&#xff1a;顺序访问和索引访问。 1.1.顺序访问 顺序访问是在表中实行全表扫描&#xff0c;从头到尾逐行遍历&#xff0c;直到在无序的行数据中找到符合条件的目标数据。实现比较简单&#xff0c…

线性代数的本质(七)——特征值和特征向量

特征值和特征向量 本章特征值和特征向量的概念只在方阵的范畴内探讨。 相似矩阵 Grant&#xff1a;线性变换对应的矩阵依赖于所选择的基。 一般情况下&#xff0c;同一个线性变换在不同基下的矩阵不同。仍然以平面线性变换为例&#xff0c;Grant 选用标准坐标系下的基向量 i…

YOLO物体检测-系列教程2:YOLOV2整体解读

&#x1f388;&#x1f388;&#x1f388;YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV2提出论文&#xff1a;YOLO9000: Better, Faster, Stronger 1、YOLOV1 优点&#xff1a;快速&#xff0c;简单&#xff01;问题1&#xff1a;每个Cell只预测一个类别&…

微调语言模型前,需要考虑这三个关键方面

编者按&#xff1a;随着大语言模型(LLM)的迅速发展&#xff0c;越来越多团队希望针对特定领域进行模型微调。但是实践运用中总是存在一些困难&#xff0c;直接应用并不总是能达到理想效果。 本文着重探讨了三个关键问题: 利用强大模型(如ChatGPT)的输出结果来微调较弱模型是否有…

linux 强大的搜索命令 grep

单文件搜索grep 搜索内容 文件多文件搜索 grep -r ‘搜索内容’ 目录