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

33.华为 OD-C 卷 200 分题目 5 - 项目排期(Java 实现)

📝 题目描述

项目组共有 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 天。

💡 解题思路

这是一个典型的最小化最大负载问题,属于 NP 难问题,我们可以用二分查找 + 贪心验证的思路高效解决:

1. 确定二分边界:

◦ 下界 left:需求中工作量最大的天数(单个需求必须由一个人完成,所以总时间至少不小于最大的单个需求)
◦ 上界 right:所有需求工作量之和(只有一个人时的总时间)

2. 二分查找最小时间:

◦ 取中间值 mid,判断是否能在 mid

http://www.jsqmd.com/news/494780/

相关文章:

  • 【安装】TortoiseGit 可视化界面 小乌龟 汉化
  • 电商行业的数据智能化趋势
  • 【BBF系列协议】TR181-2 TR369的设备数据模型
  • Python的继承与多态
  • CDial-GPT 开源项目使用教程
  • 嵌入式系统优化
  • 易通成稿www.no1paper.cn在代码中插入此成稿内网
  • 主板调速风扇电路设计
  • Redis 缓存穿透与防御方案实现
  • 2.7通用串行总线 USB Universal Serial Bus
  • 【RK3588开发记录】RK3588之opencv安装(解决libjasper-dev和mipi-csi2接口)
  • 用 RollCode 重构营销 H5 的开发协作逻辑
  • 程序设计-股票最大收益问题(Java)
  • ESXI主机安装Zabbix 6.2
  • 三相并网逆变器外环PI+内环模型预测MPC电流矢量控制仿真(带简要文档)
  • 上班族就医难?天津陪诊认准守嘉,代办陪诊一站式解放时间精力 - 品牌排行榜单
  • Termux Monet 项目使用教程
  • scp拷贝
  • 汽油光谱数据预处理与识别(主成分分析PCA+极限学习机ELM+深度置信网络DBN)附Matlab代码
  • 2023年 beagle bone black教程3-点灯的三种方式
  • 联合循环——33 油罐,水罐,凝汽器和地下管道阴极保护
  • 心电信号去工频和基线漂移(小波/EMD/高通滤波/低通滤波/最小二乘法)附Matlab代码
  • 2023年 beagle bone black教程4-串口的使用
  • NaughtyKeyboard 开源项目教程
  • 异地来津就医不迷茫!天津陪诊选守嘉,全程护航少走弯路 - 品牌排行榜单
  • Chrome Apps for Mobile 项目教程
  • MongoDB(45) 嵌入式文档与引用的优缺点是什么?
  • 解决!expandable-recycler-view 已废弃,替代方案与迁移指南全解析
  • 2023年 beagle bone black教程5-CAN的使用
  • iOS App技术支持网址(URL)