【新】华为OD机试 - 核酸检测人员安排 | 总最快检测效率(Python)| 运气好,这就是原题

本篇题解:核酸检测人员安排 | 总最快检测效率

题目

在系统、网络均正常情况下,组织核酸采样员和志愿者对人群进行核酸检测筛查。
每名采样员的效率不同,采样效率为N人/小时

由于外界变化,采样员的效率会以M人/小时为粒度发生变化,M 为采样效率浮动粒度,M=N*10%,输入保证N*10%的结果为整数。
采样员效率浮动规则:

采样员需要一名志愿者协助组织才能发挥正常效率,再此基础上,每增加一名志愿者,效率提升1M,最多提升3M,如果没有志愿者协助组织,效率下降2M

怎么安排速度最快?求总最快检测效率(总检查效率为个采样人员效率值相加 )

输入

  • 第一行:
    • 第一个值,采样员人数,取值范围[1,100]
    • 第二个值,志愿者人数,取值范围[1,500]
  • 第二行:
    • 采样员基准效率值(单位人/小时),取值范围[60,600], 保证序列中每项值计算10%为整数

输出

  • 第一行:总最快检测效率(单位人/小时)

示例一

输入

2 2
200 200

输出

400

编码思路

下述代码的重点是 solve_method() 函数,该函数接收三个参数,分别是一个整数数组 arr,以及两个整数 x 和 y。
函数的目的是从数组 arr 中选取一些数,使得这些数的和最大,同时满足以下两个条件:

选取的数的个数不超过 y 个。
如果选取的数的个数不足 x 个,则必须选取前 y 个数中的所有数。

函数的实现逻辑如下:
将数组 arr 按照从大到小的顺序排序。
如果 y 小于 x,则选取前 y 个数中的所有数,并将剩余的 x-y 个数按照从大到小的顺序选取,其中每个数的价值为原价值的 80%。
如果 y 大于等于 x,则选取所有的 x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值