华为机试题-单车道汽车通行时间-Java

代码在最后面

1 题目描述

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

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

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

2 输入描述

第一行两个数字:M N,分别代表车辆数和到终点的距离,以空格分隔。
接下来 M 行,每行一个数字 S,代表每辆车的速度。
0 < S < 30

3 输出描述

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

4 示例

4.1 示例1

输入	
2 10
4
2
输出	
5

解释:
第一行,表示2辆车,起点到终点的距离为10个单位。
第一辆车的速度为4,则第一辆车到终点的时间 2.5 = 10 / 4
第二辆车的速度为2,则第二辆车到终点的时间 5 = 10 / 2
由于第一辆车比第二辆车快,所以不存在阻塞问题,即最终答案为 5

4.1 示例2

输入	
2 10
2
4
输出	
4

解释:
第一行,表示2辆车,起点到终点的距离为10个单位。
第一辆车的速度为2,则第一辆车到终点的时间 5 = 10 / 2
第二辆车的速度为4,则第二辆车到终点的时间 2.5 = 10 / 4
由于第一辆车比第二辆车慢,所以存在阻塞问题,第二辆车并不能用2.5个时间单位到达目的地。但由于车辆是每隔1个时间单位出发, 1 + 2.5 = 3.5 < 5,所以第二辆车的到车时间是 5,但发车时间为 1,即第二辆车用时 4 = 5 -1 个时间单位。

5 代码解题

第二个示例是我写的,其实根据第二个示例就能看出来,这个题怎么解了。
假设没有阻塞问题,即后一辆车不会被前一辆车阻塞,只考虑发车时间和车速。
记当前发车为第 i 辆车,发车时间则为 start = i - 1,记车速为 v,记总路程为 S(也就是N),那么可以计算出每辆车到达终点的最终时间点h = start + S / v = i - 1 + S / v。【最终时间不是车辆通过路段的用时,而是一个时间点】
然后代入阻塞问题中,已知后一辆车会被前一辆车阻塞,记MaxH为所有车到达终点的时间最大值,记第X辆车到终点的时间为 MaxH。那么可以得出结论,1..X辆车必定在MaxH之前到达,不考虑, X..M辆车必定不能在MaxH之前到达终点。由此可以计算出,最后一辆车的用时为 T = MaxH -start = MaxH - (i - 1)
代入示例二,进行思路验证:

2 10 // 两辆车,路程10个单位
2 // 第一辆车,0点发车,车速单位为2,最终到达终点时间点 5 = 0 + 10 / 2
4 // 第一辆车,1点发车,车速单位为4,最终到达终点时间点 3.5 = 1 + 10 / 4
--- 代入上述公式
所有车到达终点的时间最大值 MaxH = 5
最后一辆车用时 T = MaxH - (i - 1) = 5 - (2 - 1) = 4
符合预期,完美

解题代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String line = scanner.nextLine();String[] split = line.split(" ");final int M = Integer.parseInt(split[0]);final int N = Integer.parseInt(split[1]);double maxH = 0;// i 表示发车时间,i + 1 表示发车序号,i = 0 < M 循环也是 M 次,所以省略车序号计算for (int i = 0; i < M; i++) {// 车速度int v = scanner.nextInt();maxH = Math.max(maxH, (double) N / v + i);}// M - 1 表示最后一辆车发车时间点double time = maxH - (M - 1);scanner.close();System.out.println(time);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/45847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

赋值运算符.二

# 赋值运算符 # 等号右边先运算 a 10 # 复合运算符&#xff1a; 算术运算符 赋值运算符 简化代码 a a 1 print(a) # 11 a 1 print(a) # 12 a - 2 print(a) # 10 a * 5 print(a) # 50 a % 4 # 等价于: a a % 4 print(a) # 2 a ** 3 print(a) # 8 # P…

旋转电连接器抗干扰性有哪几个方面?

旋转电连接器作为一种精密的电气传输装置&#xff0c;它实现了两个相对旋转部件间的功率和信号传输。通过旋转电连接器可以传输高频的交流电、高电压的交流电、大电流的交流电、弱小的直流小信号等多种电信号&#xff0c;但是由仪器之间的距离有限&#xff0c;在如此短的距离内…

蓝桥杯算法周赛开赛啦

提醒&#xff1a;19:00算法双周赛准时开启&#xff01; 单题“一血”可获得云课定制便携风扇&#xff01; &#x1f9e7;入榜最高200元&#xff01;还可抽20&#xff5e;100元现金 &#x1fad8;每月参加2次算法双周赛&#xff0c;额外发放88个实验豆&#xff01; 参赛链接…

C++:类和对象 I(访问限定符、this指针)

目录 类的定义 类的大小 访问限定符 实例化 this指针 类的定义 class就是类&#xff0c;class是C中的一个关键字 当然类也可以是C语言中的struct&#xff0c;C兼容struct&#xff0c;甚至还有一些升级 定义类的方式 class Date {}; 和C语言的struct一样&#xff0c;c…

企业国产操作系统选型适配实施方案

【摘要】企业在推动国产化进程时&#xff0c;需选择一款主流、稳定且安全的服务器操作系统作为其系统软件。在产品投入实际生产环境前&#xff0c;对上游软硬件的适配情况有深入了解至关重要。本文将重点介绍银河麒麟高级服务器操作系统V10&#xff08;以下简称麒麟V10&#xf…

Spuer().__init__的意义

class MyModel(nn.Module):def __init__(self):super().__init__() # 调用 nn.Module 的 __init__# 现在 nn.Module 的初始化完成&#xff0c;我们可以添加自定义层self.conv1 nn.Conv2d(1, 20, 5)self.conv2 nn.Conv2d(20, 20, 5) super().__init__() 在这里确实是在显式调…

昇思25天学习打卡营第14天|K近邻算法实现红酒聚类

红酒Wine数据集 类别(13类属性)&#xff1a;Alcohol&#xff0c;酒精&#xff1b;Malic acid&#xff0c;苹果酸 Ash&#xff0c;灰&#xff1b;Alcalinity of ash&#xff0c;灰的碱度&#xff1b; Magnesium&#xff0c;镁&#xff1b;Total phenols&#xff0c;总酚&#xf…

算法可以赋能教育业务的哪些场景?

本文内容就一个点&#xff0c;将算法应用到教育系统中的各场景&#xff0c;让每个业务模块都实现智能化 以下列举出所有的需求点 目录 一、千人千面&#xff0c;个性化推荐流&#xff0c;推荐用户感兴趣的内容 实现方案&#xff1a;CTR模型 应用场景&#xff1a;所有的内容…

Perl语言之数组

Perl数组可以存储多个标量&#xff0c;并且标量数据类型可以不同。   数组变量以开头。访问与定义格式如下&#xff1a; #! /usr/bin/perl arr("asdfasd",2,23.56,a); print "输出所有:arr\n"; print "arr[0]$arr[0]\n"; #输出指定下标 print…

NLP任务:情感分析、看图说话

我可不向其他博主那样拖泥带水&#xff0c;我有代码就直接贴在文章里&#xff0c;或者放到gitee供你们参考下载&#xff0c;虽然写的不咋滴&#xff0c;废话少说&#xff0c;上代码。 gitee码云地址&#xff1a; 卢东艺/pytorch_cv_nlp - 码云 - 开源中国 (gitee.com)https:/…

deepin 卸载nginx

在Deepin系统中&#xff0c;要卸载nginx&#xff0c;可以通过终端执行以下步骤&#xff1a; 停止nginx服务&#xff1a; sudo systemctl stop nginx 禁用nginx服务&#xff08;如果不再需要开机自启&#xff09;&#xff1a; sudo systemctl disable nginx使用包管理器卸载ngi…

初始c语言 语句

一 认识语句 控制流语句 if-else语句&#xff1a;用于条件判断。for循环语句&#xff1a;用于循环执行一段代码。while循环语句&#xff1a;当条件为真时执行循环。do-while循环语句&#xff1a;先执行一次循环体&#xff0c;然后再判断条件。switch语句&#xff1a;根据不同的…

pyinstaller系列教程(一)-基础介绍

1.介绍 PyInstaller是一个用于将Python应用程序打包为独立可执行文件的工具&#xff0c;它支持跨平台操作&#xff0c;包括Windows、Linux和MacOS等操作系统。特点如下&#xff1a; 跨平台支持&#xff1a;PyInstaller可以在多个操作系统上运行&#xff0c;并生成相应平台的可…

Kotlin Flow 防抖 节流

防抖和节流是针对响应跟不上触发频率这类问题的两种解决方案。 一:防抖&#xff08;debounce&#xff09;的概念&#xff1a; 防抖是指当持续触发事件时&#xff0c;一定时间段内没有再触发事件&#xff0c;事件处理函数才会执行一次&#xff0c; 如果设定时间到来之前&#x…

CEPH 硬盘读写慢问题影响

ceph使用时经常会碰到起不来的情况 第一种就是服务器负载高&#xff0c;这个基本都会觉察到 还有一种就是硬盘问题 硬盘写问题 初始化时ceph会自己进行填充操作 ceph-volume lvm zap /dev/sdx --destroy 我就碰到过没初始化问题 看着一切正常 但看写入速度才几百KB/s 正常都100…

Leetcode刷题4--- 寻找两个正序数组的中位数 Python

目录 题目及分析方法一&#xff1a;直接合并后排序方法二&#xff1a;二分查找法 题目及分析 &#xff08;力扣序号4&#xff1a;[寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/description/&#xff09; 给定两个大小分别为 m 和 n …

ArrayList模拟实现

ArrayList模拟实现 ArrayList 的初步介绍常见操作 ArrayList 的简单模拟实现 ArrayList 的初步介绍 ArrayList也叫做顺序表&#xff0c;底层是一个数组。 在创建顺序表 时就应该规定 里面元素的数据类型&#xff0c;其中不能直接传基本数据类型&#xff0c;例如int、char。需要…

Java代码初始化块

目录 实例域代码块 静态域代码块 初始化代码块分为静态域代码块和实例域代码块&#xff0c;静态域代码块在类第一次被加载时被执行&#xff0c;实例域代码块在创建对象时被执行&#xff0c;一个类中可以有多个代码块。 实例域代码块 使用方法 可以有输出语句 可以对类的属…

vue实现a-model弹窗拖拽移动

通过自定义拖拽指令实现 实现效果 拖动顶部&#xff0c;可对整个弹窗实施拖拽&#xff08;如果需要拖动底部、中间内容实现拖拽&#xff0c;把下面的ant-modal-header对应改掉就行&#xff09; 代码实现 编写自定义指令 新建一个ts / js文件&#xff0c;用ts举例 import V…

基于modbus tcp通讯的雷赛导轨控制器调试软件

0.前言 之前工作遇到了雷赛电机驱动器设备&#xff0c;主要是用来控制光学导轨移动。雷赛的调试软件用的时串口通讯&#xff0c;还要他们定制的串口线&#xff0c;在现场都是485转网络的接口&#xff0c;调试起来也很不方便。所以我就照着他们的说明书&#xff0c;写了一个简易…