华为OD机试 - 项目排期 - 贪心算法(Java 2024 C卷 200分)

news2025/1/15 17:38:44

在这里插入图片描述

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

专栏导读

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

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

一、题目描述

项目组共有N个开发人员,项目经理接到了M个独立的需求,每个需求的工作量不同,且每个需求只能由一个开发人员独立完成,不能多人合作。

假定各个需求直接无任何先后依赖关系,请设计算法帮助项目经理进行工作安排,使整个项目能用最少的时间交付。

二、输入描述

第一行输入为M个需求的工作量,单位为天,用逗号隔开。 例如:X1 X2 X3 … Xm 表示共有M个需求,每个需求的工作量分别为X1天,X2天…Xm天。其中0<M<30;0<Xm<200 第二行输入为项目组人员数量N 例如: 5 表示共有5名员工,其中0<N<10

三、输出描述

最快完成所有工作的天数 例如: 25 表示最短需要25天能完成所有工作。

四、解题思路

这个问题是典型的“负载均衡”问题,其中的目标是最小化完成所有任务的最大时间。在这个问题中,我们需要将M个任务(需求),每个有不同的工作量,分配给N个开发人员,使得所有工作被完成的总时间最小。

一个有效的方法是使用“最短处理时间优先”(SPT,Shortest Processing Time first)策略,结合“最长任务优先分配”(Largest Task First allocation)以及“贪心算法”,使得总体完成时间最短。

具体步骤:

  1. 任务排序:首先按照工作量从大到小对需求进行排序。
  2. 初始化工作量数组:创建一个数组(或列表),用以记录每位开发人员当前的工作量。
  3. 贪心分配任务:依次将最大的任务分配给当前工作量最小的开发人员。

通过这种方式,我们尽可能保证每个人的负载都接近平均,但尽量让工作量较大的任务先分配,从而尽早开始执行耗时较长的任务。

五、Java算法源码

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

        // 读取工作量和员工数
        String[] workloadStr = scanner.nextLine().split(" ");
        int[] workloads = Arrays.stream(workloadStr).mapToInt(Integer::parseInt).toArray();
        int numEmployees = Integer.parseInt(scanner.nextLine());

        // 计算最短完成时间
        int minDays = calculateMinimumDays(workloads, numEmployees);
        System.out.println(minDays);
    }

    private static int calculateMinimumDays(int[] workloads, int numEmployees) {
        // 将任务按照工作量从大到小排序
        Arrays.sort(workloads);
        // 初始化员工工作天数数组
        int[] employeeLoad = new int[numEmployees];

        // 从最大工作量任务开始分配
        for (int i = workloads.length - 1; i >= 0; i--) {
            int minLoadIndex = 0;
            // 找到当前工作量最小的员工
            for (int j = 1; j < numEmployees; j++) {
                if (employeeLoad[j] < employeeLoad[minLoadIndex]) {
                    minLoadIndex = j;
                }
            }
            // 分配任务给该员工
            employeeLoad[minLoadIndex] += workloads[i];
        }

        // 找出最大的工作量,即为完成所有任务的最少天数
        int maxDays = 0;
        for (int load : employeeLoad) {
            maxDays = Math.max(maxDays, load);
        }
        return maxDays;
    }
}

六、效果展示

1、输入

6 2 7 7 9 3 2 1 3 11 4
2

2、输出

28

3、说明

共有两位员工,其中一位分配需求6 2 7 7 3 2 1共需要28天完成,另一位分配需求9 3 11 4共需要27天完成,故完成所有工作至少需要28天。

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)

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

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

在这里插入图片描述

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

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

相关文章

图形学初识--矩阵和向量

文章目录 前言正文向量什么是向量&#xff1f;向量涉及哪些常见计算&#xff1f;1、取模2、归一化3、向量加法4、向量减法5、向量与标量乘6、向量点乘&#xff08;内积&#xff09;7、向量投影 向量有哪些基本应用&#xff1f; 矩阵什么是矩阵&#xff1f;矩阵涉及哪些常见计算…

开源基于Rust编写的Web服务器

基于 RUST 的 WEB 资源服务器 Github 地址 LTPP-GIT 地址 官方文档 该项目于 2024 年 5 月 1 日开始开发 预期功能 功能支持情况当前情况多线程支持是是服务支持配置化是是防盗链支持是是gzip 支持是是反向代理支持是是自定义状态码对应资源文件是是日志支持是是负载均衡支…

网关(GateWay)- 快速使用

引入依赖 <!-- gateway --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency> 路由配置 server:port: 8088 spring:application:name: api-gatew…

一书读懂Python全栈安全,剑指网络空间安全

写在前面 通过阅读《Python全栈安全/网络空间安全丛书》&#xff0c;您将能够全面而深入地理解Python全栈安全的广阔领域&#xff0c;从基础概念到高级应用无一遗漏。本书不仅详细解析了Python在网络安全、后端开发、数据分析及自动化等全栈领域的安全实践&#xff0c;还紧密贴…

Java设计模式-活动对象与访问者

活动对象 Java设计模式中&#xff0c;活动对象是指一个对象始终处于活动的状态&#xff0c;该对象包括一个线程安全的数据结构以及一个活跃的执行线程。 如上所示&#xff0c;ActiveCreature类的构造函数初始化一个线程安全的数据结构&#xff08;阻塞队列&#xff09;、初始化…

IAR9.30安装和注册相关

下载解压licpatcher64工具&#xff0c;把licpatcher64.exe拷贝到IAR的安装目录中双击运行。 示例IAR9.30.1默认安装如下如下&#xff0c;一共三个分别拷贝运行&#xff0c;不要遗漏。 C:\Program Files\IAR Systems\Embedded Workbench 9.1\arm\bin C:\Program Files\IAR Syst…

DiffIR论文阅读笔记

ICCV2023的一篇用diffusion模型做Image Restoration的论文&#xff0c;一作是清华的教授&#xff0c;还在NIPS2023上一作发表了Hierarchical Integration Diffusion Model for Realistic Image Deblurring&#xff0c;作者里甚至有Luc Van Gool大佬。模型分三个部分&#xff0c…

无需安装的在线PS:打开即用

为什么想用在线PS网页版&#xff1f;Photoshop常用于平面设计&#xff0c;是不少设计师接触过的第一款设计软件。作为一款平面设计工具&#xff0c;ps功能太多&#xff0c;并且没有在线版&#xff0c;这不仅需要设计师花费时间学习软件&#xff0c;还需要设计师具备一定的设计能…

2023年全球DDoS攻击现状与趋势分析

天翼安全科技有限公司副总工程师、运营保障部总经理陈林表示&#xff0c;2023年扫段攻击频次快速增长&#xff0c;成为网络基础设施面临的最大威胁。为躲避防御&#xff0c;低速扫段攻击成为主流达到攻击总数的73.19%&#xff1b;43.26%的C段攻击持续时间小于5分钟&#xff0c;…

Science Advances|柔性超韧半导体纤维的大规模制备(柔性半导体器件/可穿戴电子/纤维器件/柔性电子)

北京大学 雷霆(Ting Lei)团队,在《Science Advances》上发布了一篇题为“Continuous production of ultratough semiconducting polymer fibers with high electronic performance”的论文。论文内容如下: 一、 摘要 共轭聚合物具有良好的光电特性,但其脆性和机械特性差,…

03 Prometheus+Grafana可视化配置

03 PrometheusGrafana可视化配置 大家好&#xff0c;我是秋意零。接上篇Prometheus入门安装教程 grafana官网下载安装包比较慢&#xff0c;如果没有魔法。可关注公众号【秋意零】回复101获取 Grafana官网下载&#xff1a;https://grafana.com/grafana/download 这里采用的二进制…

定个小目标之每天刷LeetCode热题(3)

这是一道简单题&#xff0c;我这里就只讲两种解法 第一种是数组加双指针&#xff0c;先遍历链表将值存到数组里&#xff0c;然后分别从数组两端进行一一比较判断是否满足回文&#xff0c;代码实现 class Solution {public boolean isPalindrome(ListNode head) {List<Inte…

重生奇迹mu卡智力的方法

1、准备3个号A打手,B智力MM,C随意。 2、使用C匹配组队,但是不能选择自动进入队伍。 3、用A申请C的队伍,但是C不做通过处理。 4、用A组B,用快捷键D的方式。 5、所谓的卡智力就是智力MM可以给打手加属性加血&#xff0c;但是并不在一个队伍里享受经验&#xff0c;适用于MM不是…

如何批量结构化分汇多工作表sheet?

目录 一、如遇合并表格&#xff0c;注意结构化二、确认主键&#xff0c;合并所有文件数据三、sheet2同理四、案例总结 如果遇到这样情形&#xff0c;多文件夹多文件&#xff0c;多工作表的分汇场景&#xff1b;可以参考以下方法解决。 一、如遇合并表格&#xff0c;注意结构…

Python 机器学习 基础 之 算法链与管道 【算法链与管道/预处理进行参数选择/构建管道/在网格搜索中使用管道】的简单说明

Python 机器学习 基础 之 算法链与管道 【算法链与管道/预处理进行参数选择/构建管道/在网格搜索中使用管道】的简单说明 目录 Python 机器学习 基础 之 算法链与管道 【算法链与管道/预处理进行参数选择/构建管道/在网格搜索中使用管道】的简单说明 一、简单介绍 二、算法链…

「异步魔法:Python数据库交互的革命」(一)

Hi&#xff0c;我是阿佑&#xff0c;今天将和大家一块打开异步魔法的大门&#xff0c;进入Python异步编程的神秘领域&#xff0c;学习如何同时施展多个咒语而不需等待。了解asyncio的魔力&#xff0c;掌握Async SQLAlchemy和Tortoise-ORM的秘密&#xff0c;让你的数据库操作快如…

2024广东省赛 G.Menji 和 gcd

题目 #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 #define ll long long const int maxn 1e6 5, inf 1e12, maxm 4e4 …

脑机接口:是现代医学的外挂,更是瘫痪病人的豪赌

5 月 17 日&#xff0c;马斯克公开表示&#xff0c;继今年年初首次成功将大脑芯片植入患者大脑后&#xff0c;Neuralink 正在寻找第二位受试者接受这项手术。 5 月 20 日&#xff0c;美国食品药品监督管理局 (FDA) 批准了马斯克的 Neuralink 公司为第二位患者植入脑芯片&#…

超详细介绍基于微调 Faster R-CNN实现海上航拍图像中检测小物体-含源码与数据集免费下载

在航拍图像中检测小物体,尤其是对于海上救援等关键应用而言,是一项独特的挑战。及时检测水中的人可能意味着生死之间的差别。我们的研究重点是微调 Faster R-CNN(一种强大的两阶段物体检测器),以满足这一重要需求。 我们研究的核心是SeaDroneSee 数据集,这是一组重要的图…

Springboot项目搭建 jdk1.8

1.idea创建项目 2.项目配置 maven 编辑项目编码 删除无用文件 修改配置文件后缀&#xff0c;设置数据库 spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/honey2024?useSSLfalse&useUnicodetrue&characterEncodingUT…