#OD036. 寻找核酸检测点

寻找核酸检测点

题目解析和算法源码

华为OD机试 - 寻找核酸检测点(Java & JS & Python)_伏城之外的博客-CSDN博客

题目描述

张三要去外地出差,需要做核酸,需要在指定时间点前做完核酸,请帮他找到满足条件的核酸检测点。

  • 给出一组核酸检测点的距离和每个核酸检测点当前的人数
  • 给出张三要去做核酸的出发时间 出发时间是10分钟的倍数,同时给出张三做核酸的最晚结束时间
  • 题目中给出的距离是整数,单位是公里,时间1分钟为一基本单位

去找核酸点时,有如下的限制:

  • 去往核酸点的路上,每公里距离花费时间10分钟,费用是10元
  • 核酸点每检测一个人的时间花费是1分钟
  • 每个核酸点工作时间都是8点到20点中间不休息,核酸点准时工作,早到晚到都不检测
  • 核酸检测结果可立刻知道
  • 在张三去某个核酸点的路上花费的时间内,此核酸检测点的人数是动态变化的,变化规则是
  1. 在非核酸检测时间内,没有人排队
  2. 8点-10点每分钟增加3人
  3. 12点-14点每分钟增加10人
  4. 18点-20点每分钟增加20人。
  5. 其他时间每5分钟增加1人。

要求将所有满足条件的核酸检测点按照优选规则排序列出 : 优选规则:

  1. 花费时间最少的核酸检测点排在前面。
  2. 花费时间一样,花费费用最少的核酸检测点排在前面。
  3. 时间和费用一样,则ID值最小的排在前面

输入描述

H1 M1

H2 M2

N

ID1 D1 C1

ID2 D2 C2

IDn Dn Cn

H1: 当前时间的小时数。 M1:当前时间的分钟数, H2:指定完成核算时间的小时数。 M2:指定完成核算时间的分钟数。 N:所有核酸检测点个数。 ID1:核酸点的ID值。 D1:核酸检测点距离张三的距离。 C1:核酸检测点当前检测的人数。

输出描述

N

I2 T2 M2

I3 T3 M3

N:满足要求的核酸检测点个数 I2:选择后的核酸检测点ID T2:做完核酸花费的总时间(分钟) M3:去该核算点花费的费用

用例1

输入

10 30
14 50
3
1 10 19
2 8 20
3 21 3

输出

2
2 80 80
1 190 100