当前位置: 首页 > news >正文

(新卷,200分)- 运输时间(Java JS Python C)

(新卷,200分)- 运输时间(Java & JS & Python & C)

题目描述

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

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

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

输入描述

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

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

输出描述

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

用例
输入2 11
3
2
输出5.5
说明2辆车,距离11,0时出发的车速度快,1时出发的车,到达目的地花费5.5
题目解析

需要注意的关键点在于:在单行道上,快速车辆可以与前车并行行驶。因此题目中提到的"不能超车的单行道"实际上是指单向车道,可能包含多条并行车道。

解题思路如下:

  1. 后车行驶规则:

    • 若后车正常行驶时比前车更快到达终点,将被前车阻挡,此时后车到达时间与前车相同
    • 若后车正常行驶时比前车更慢到达终点,则不受前车影响,按自身速度到达
  2. 时间计算:

    • 所需时间为到达时刻减去出发时刻
  3. 输出格式:

    • 结果可能为小数,默认保留3位有效数字(四舍五入),实际考试时需根据题目要求调整
JS算法源码
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void (async function () { const [m, n] = (await readline()).split(" ").map(Number); // 记录前车到达终点的时刻,本题后车不可能比前车更早到达,因此如果后车到达时刻 < 前车到达时刻arrived,则后车也是按照前车arrived时刻达到 let arrived = 0; for (let i = 0; i < m; i++) { // 当前车的速度 const speed = parseInt(await readline()); // 当前车到达终点的时刻 // * 当前车如果比前车更早到达,则被前车阻碍,按前车到达时间算 // * 当前车如果比前车更晚到达,则不被前车阻碍,按后车到达时间算 arrived = Math.max(arrived, n / speed + i); // n*1.0/speed是行驶花费时间; i是第i辆车的出发时间 } // 到达时刻 - 出发时刻 = 路上花费的时间 const cost = arrived - (m - 1); console.log(Number(cost.toFixed(3))); // 如果有小数位则至多保留3位 })();
Java算法源码
import java.text.NumberFormat; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); // 记录前车到达终点的时刻,本题后车不可能比前车更早到达,因此如果后车到达时刻 < 前车到达时刻arrived,则后车也是按照前车arrived时刻达到 double arrived = 0; for (int i = 0; i < m; i++) { // 当前车的速度 double speed = sc.nextDouble(); // 当前车到达终点的时刻 // * 当前车如果比前车更早到达,则被前车阻碍,按前车到达时间算 // * 当前车如果比前车更晚到达,则不被前车阻碍,按后车到达时间算 arrived = Math.max(arrived, n / speed + i); // n*1.0/speed是行驶花费时间; i是第i辆车的出发时间 } // 到达时刻 - 出发时刻 = 路上花费的时间 double cost = arrived - (m - 1); // 格式化打印小数 NumberFormat nf = NumberFormat.getInstance(); nf.setMinimumFractionDigits(0); // 没有小数位则不保留 nf.setMaximumFractionDigits(3); // 有小数位则至多保留3位 System.out.println(nf.format(cost)); } }
Python算法源码
# 输入获取 m, n = map(int, input().split()) # 记录前车到达终点的时刻,本题后车不可能比前车更早到达,因此如果后车到达时刻 < 前车到达时刻arrived,则后车也是按照前车arrived时刻达到 arrived = 0 for i in range(m): # 当前车的速度 speed = int(input()) # 当前车到达终点的时刻 # * 当前车如果比前车更早到达,则被前车阻碍,按前车到达时间算 # * 当前车如果比前车更晚到达,则不被前车阻碍,按后车到达时间算 arrived = max(arrived, n / speed + i) # n*1.0/speed是行驶花费时间; i是第i辆车的出发时间 # 到达时刻 - 出发时刻 = 路上花费的时间 cost = arrived - (m - 1) print("{:g}".format(round(cost, 3))) # 如果有小数位则至多保留3位,:g 用于去除无效小数位
C算法源码
#include <stdio.h> #include <math.h> int main() { int m, n; scanf("%d %d", &m, &n); // 记录前车到达终点的时刻,本题后车不可能比前车更早到达,因此如果后车到达时刻 < 前车到达时刻arrived,则后车也是按照前车arrived时刻达到 double arrived = 0; for(int i=0; i<m; i++) { // 当前车的速度 double speed; scanf("%lf", &speed); // 当前车到达终点的时刻 // * 当前车如果比前车更早到达,则被前车阻碍,按前车到达时间算 // * 当前车如果比前车更晚到达,则不被前车阻碍,按后车到达时间算 arrived = fmax(arrived, n / speed + i); // n*1.0/speed是行驶花费时间; i是第i辆车的出发时间 } // 到达时刻 - 出发时刻 = 路上花费的时间 double cost = arrived - (m - 1); // 至多保留3个小数位 char res[100]; sprintf(res, "%.3f", cost); // %g 格式 不会打印无效小数位 printf("%g", atof(res)); return 0; }
http://www.jsqmd.com/news/334533/

相关文章:

  • (新卷,100分)- 解密犯罪时间(Java JS Python)
  • SSM计算机毕设之基于Java+SSM的电子商务平台的设计与实现基于ssm的电子商务平台的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 一文搞懂大模型三大推理框架:CoT、ReAct、ToT从入门到实战
  • 基于允许非法状态的贪心策略
  • 嵌入式数据库C++集成
  • SSM毕设项目:基于ssm的电子商务平台的设计与实现(源码+文档,讲解、调试运行,定制等)
  • (新卷,100分)- 开源项目热度榜单(Java JS Python C)
  • 高性能文本处理库
  • AI 论文写作工具排名(实测不踩坑)
  • 蜜度与大象融媒达成战略合作 共筑AI时代舆情管理新生态
  • 【毕业设计】基于ssm的电子商务平台的设计与实现(源码+文档+远程调试,全bao定制等)
  • 突破职业瓶颈!2026 程序员 10 大职业前景方向,网安低门槛衔接开发技能首选
  • C++中的委托构造函数
  • 还在多系统间切换查看光功率?何不试试“光+无线”的统一纳管?
  • C++与Qt图形开发
  • 【毕业设计】基于ssm的红色文化宣传平台的设计与实现(源码+文档+远程调试,全bao定制等)
  • Hadoop与人工智能:推动大数据智能化发展
  • Python虚拟环境(venv)完全指南:隔离项目依赖
  • 领航低空新经济:大漠大荣膺福布斯中国“领航企业”奖
  • 构建基于NLP的金融监管文件遵从性自动检查系统
  • CTF 全题型答案 + 详细步骤:从隐写术到漏洞利用,网安大赛解题指南
  • 开题报告基于PHP的校园OA系统
  • 移动平台C++开发指南
  • 多智能体架构实战:LangChain构建高效AI系统的四种模式选择
  • 大数据深度学习|计算机毕设项目|计算机毕设答辩|基于知识图谱的程序设计课程关键知识链子系统开发
  • 开题报告基于PHP的会客间留言系统
  • 全球网安人才缺口达 480 万!高校培养的关键突破口在哪?专家深度解读
  • 【导弹】计算战场中发射的烟幕干扰弹对来袭导弹干扰时间【含Matlab源码 15038期】
  • 大模型学习宝典:发展历程、RAG技术与Agent架构详解,建议收藏
  • -基于JAVA的二手显卡交易系统-论文