华为OD机试真题 - 运输时间 (D卷,200分)

题目描述

M(1 ≤ M ≤ 20)辆车需要在一条不能超车的单行道到达终点,起点到终点的距离为 N(1 ≤ N ≤ 400)。

速度快的车追上前车后,只能以前车的速度继续行驶,求最后一辆车到达目的地花费的时间。

注:每辆车固定间隔 1 小时出发,比如第一辆车 0 时出发,第二辆车 1 时出发,依次类推

目录

题目描述

输入描述

输出描述

用例

题目解析

Java算法源码

JS算法源码

Python算法源码

C算法源码

华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100分,第三道为中等或困难题,分值为200分。总分为400分,150分钟,机试是在牛客考试,练习的时候也可以在牛客网练习,提前熟悉操作

https://ac.nowcoder.com/acm/contest/5652/K

点击上方链接进入牛客练习界面,可以自定义题目,自定义输入、输出等等,华为OD真实机试环境,非其他第三方平台模拟。

输入描述

第一行两个数字:M N,分别代表车辆数和到终点的距离,以空格分隔

接下来 M 行,每行一个数字 S,代表每辆车的速度。0 < S < 30

输出描述

最后一辆车到达目的地花费的时间

用例

题目解析

  1. 首先读取输入的车辆数M和到终点的距离N。
  2. 然后读取每辆车的速度,存储在列表中。
  3. 从第一辆车开始,计算每辆车到达终点所需的时间,如果前一辆车已经到达终点,则当前车辆以前一辆车的速度行驶。
  4. 最后输出最后一辆车到达目的地花费的时间。

JS算法源码

const rl = require("readline").createInterface({ input: process.stdin });
const lines = [];
rl.on('line', (line) => {
    lines.push(line);
});
rl.on('close', () => {
    const [m, n] = lines[0].split(" ").map(Number);
    const speeds = lines.slice(1).map(Number);
    const arrived = speeds.reduce((acc, speed, i) => Math.max(acc, n / speed + i), 0);
    const cost = arrived - (m - 1);
    console.log(Number(cost.toFixed(3)));
});



Java算法源码

im

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024华为OD机试题库D卷 文章被收录于专栏

2024年5-11月份考的D卷,不用再看AB卷,CD卷题目一样。多种语言解法,欢迎提供更好的解法。

全部评论

相关推荐

1 2 评论
分享
牛客网
牛客企业服务