【C++心路历程41】【体检】【贪心】【思路题】

有没有发现和上一篇博客好像。。。然而就是受到了厨师的影响!那个题纯纯的算一下最大值和平均的关系就可以了。。。所以今天在考试中愚蠢…
【问题描述】

  由于流感爆发,所以医院有很多人排队检查身体。
  医院有m个医生,他们的工作效率相同,但有一个奇怪规则:要么m个医生都同时工作,要么只有一个医生工作(其他医生都监督这个不幸的医生)。
  现在有n个人排队体检,每个人需要不同的时间来完成体检。一个医生可以只检查病人的一部分,然后留给其他医生继续。也就是说,一个病人可以在任意时间找任意医生完成任意部分的检查,只需要满足:一个病人不能同时被多个医生检查,一个医生不能同时检查多病人。
  现在给出医生和病人数量以及每个病人完成体检所需要的时间Ti(分钟),请你计算所有病人体检完的最短时间。

【输入格式】

  输入的第1行一个整数Case,表示测试数据组数。以下的每组数据的第1行为m和n两个整数,他们的意义如题目描述。第二行为n个实数,其中第i个实数Ti表示第i个人需要的检查时间为Ti分钟。

【输出格式】

  每组数据输出一行一个实数,表示n个人完成体检的最短时间(单位分钟),保留4位小数(最后一位需要四舍五入)。

【输入样例】

3
3 2
1.0 2.0
2 2
1.0 2.0
2 3
1.00 2.0 3.0

【输出样例】

3.0000
2.0000
3.0000

【样例解释】

  对于第1组数据,有3个医生,但只有2个病人,所以只能采取一个医生工作,另两个医生监督的模式,所以完成时间为1.0000+2.0000=3.0000分钟;
  对于第2组数据,有2个医生2个病人,先由两个医生同时工作1分钟,完成第一个人的检查和第2个人一半的检查,再由一个医生用1分钟完成第2个人的检查;
  对于第3组数据,有2个医生3个病人,由两个医生同时工作3分钟,一个医生完成第1、2个人的检查,另一个医生完成第3个人的检查。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值