当前位置: 首页 > news >正文

华为od-C卷200分题目5 -项目排期

华为od-C卷200分题目5 -项目排期

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

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

输入
第一行输入为M个需求的工作量,单位为天,用逗号隔开。 例如:X1 X2 X3 … Xm 。

表示共有M个需求,每个需求的工作量分别为X1天,X2天…Xm天。
其中0 < M < 30;0 < Xm < 200
第二行输入为项目组人员数量N

输出
最快完成所有工作的天数
样例输入 复制
6 2 7 7 9 3 2 1 3 11 4
2
样例输出 复制
28
提示
共有两位员工,其中一位分配需求 6 2 7 7 3 2 1 共需要28天完成,另一位分配需求 9 3 11 4 共需要27天完成,故完成所有工作至少需要28天。

import java.util.*;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();List<Integer> list = Arrays.stream(s.split(" ")).map(Integer::parseInt).sorted((o1, o2) -> o2 - o1).collect(Collectors.toList());int n = sc.nextInt();PriorityQueue<Integer> queue = new PriorityQueue<>();for (int i = 0; i < n; i++) {queue.add(0);}int max = Integer.MIN_VALUE;for (Integer integer : list) {Integer poll = queue.poll() + integer;max = Math.max(poll, max);queue.offer(poll);}System.out.println(max);}
}

思路:非常简单,先按照从大到小的顺序排序,然后按照每个人分得的值进行排序,谁最小谁就先分,用优先级队列就非常简单,每次给第一个分就行了。可以自己打草稿,测试下这种方法,是对的。

http://www.lryc.cn/news/393491.html

相关文章:

  • 如何使用Pip从Git仓库安装Python包:深入探索远程依赖管理
  • 计算机专业怎么选择电脑
  • 当前国内可用的docker加速器搜集 —— 筑梦之路
  • 【腾讯内推】腾讯2025校招/青云计划/社招——长期有效
  • 集群限流sentinel实践
  • Flutter-实现双向PK进度条
  • unix高级编程系列之文件I/O
  • PySide(PyQt),记录最后一次访问文件的路径
  • wordpress企业网站模板免费下载
  • [leetcode hot 150]第一百一十七题,填充每个节点的下一个右侧节点
  • Docker 入门篇(十 一)-- 网络配置总结
  • 【Android面试八股文】Android 有哪些存储数据的方式?
  • 3. train_encoder_decoder.py
  • Hyper-V克隆虚拟机教程分享!
  • QDockWidget类详解
  • vue3.0(十六)axios详解以及完整封装方法
  • Python用于处理 DNS 查询库之Dnspython 使用详解
  • Django ORM 中过滤 JSON 数据
  • 深入探索C语言中的结构体:定义、特性与应用
  • EDEM-FLUENT耦合报错几大原因总结(持续更新)
  • ctfshow sql注入 web234--web241
  • Python的招聘数据分析与可视化管理系统-计算机毕业设计源码55218
  • 使用ChatGPT写学术论文的技巧和最佳实践指南
  • 多模态图像引导手术导航进展
  • 小程序 全局数据共享 getApp()
  • 第一次面试的经历(java开发实习生)
  • GitHub Copilot API
  • CobaltStrike的内网安全
  • Linux之进程控制(下)
  • Mac搭建anaconda环境并安装深度学习库