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

题解:学而思编程 汽车变速

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

学而思编程:汽车变速

【题目描述】

小猴开着车通过某路段。路段的入口和出口设有测速装置,它们测量出,汽车在起点速度为v 1 v_1v1​ 米/秒,终点速度为v 2 v_2v2​ 米/秒,还知道小猴通过这段路用了t tt秒。

假设每秒内的速度恒定,在每秒之间,小猴可以改变汽车速度,但是由于汽车性能的限制,新的速度与之前速度的差值不能超过d dd

求这个路段的最大可能长度,单位为米。

【输入】

第一行包含两个整数v 1 v_1v1​ 和v 2 v_2v2​ 。

第二行包含两个整数t ttd dd

数据保证一定有解。

【输出】

仅有一个数,表示以米为单位的路段最大可能长度。

【输入样例】

5 6 4 2

【输出样例】

26

【核心思想】

  1. 问题分析:给定初始速度v 1 v_1v1、终点速度v 2 v_2v2、总时间t tt和每秒最大速度变化量d dd。每秒内速度恒定,每秒之间速度变化不超过d dd。求路段的最大可能长度。这是一个线性动态规划问题,关键在于在速度变化约束下,最大化每秒行驶距离之和。

  2. 算法选择

    • 动态规划(DP)f[i][j]表示第i ii秒速度为j jj时,前i ii秒走过的最大总路程
    • 状态转移:枚举前一秒的速度k kk,在速度变化允许范围内更新当前状态
  3. 关键步骤

    • 状态定义f[i][j]表示第i ii秒速度为j jj时,前i ii秒的最大总路程
    • 初始化memset(f, -0x3f, sizeof(f)),`f[1][v_1] = v_1$(第一秒速度为v 1 v_1v1,路程为v 1 v_1v1
    • 状态转移(枚举时间i ii2 22t tt):
      • 枚举第i ii秒的速度j jj(范围[ 0 , v 1 + ( i − 1 ) × d ] [0, v_1 + (i-1) \times d][0,v1+(i1)×d]
      • 枚举第i − 1 i-1i1秒的速度k kk(范围[ max ⁡ ( 0 , j − d ) , j + d ] [\max(0, j-d), j+d][max(0,jd),j+d]
      • f[i][j] = \max(f[i][j], f[i-1][k] + j)
    • 结果f[t][v_2](第t tt秒速度恰好为v 2 v_2v2时的最大总路程)
  4. 时间/空间复杂度

    • 时间复杂度:O ( t ⋅ V ⋅ d ) O(t \cdot V \cdot d)O(tVd),其中V = v 1 + ( t − 1 ) ⋅ d V = v_1 + (t-1) \cdot dV=v1+(t1)d为最大可能速度。具体为三重循环:时间t tt、速度V VV、速度变化范围2 d + 1 2d+12d+1
    • 空间复杂度:O ( t ⋅ V ) O(t \cdot V)O(tV),二维 DP 数组
  5. 线性DP的核心思想

    • 按时间线性递推:以时间为阶段,每一秒的状态只与前一秒有关
    • 速度作为第二维状态:将速度约束转化为状态维度,确保每秒速度变化不超过d dd
    • 最大化路径和:每秒贡献当前速度值j jj,通过 DP 累加求最大总路程
    • 边界条件处理:初始速度固定为v 1 v_1v1,终止速度固定为v 2 v_2v2
    • 适用于带约束的序列最优化问题

【算法标签】

#线性DP-一维

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;// ================= 常量与全局变量 =================constintN=105;// 最大时间步数constintM=1105;// 最大速度值intv1;// 初始速度intv2;// 最终速度intt;// 总时间intd;// 每秒钟速度的最大变化量intf[N][M];// 动态规划数组// f[i][j] 表示第 i 秒速度为 j 时,前 i 秒走过的最大总路程// ================= 主函数 =================intmain(){// 读取初始速度、最终速度、总时间和最大加速度cin>>v1>>v2>>t>>d;// 初始化 dp 数组为极小值memset(f,-0x3f,sizeof(f));// 边界条件:第 1 秒速度为 v1,路程为 v1f[1][v1]=v1;// 动态规划递推for(inti=2;i<=t;i++)// 枚举时间步{// 第 i 秒的可能速度范围:[0, v1 + (i-1)*d]for(intj=0;j<=v1+(i-1)*d;j++){// 第 i-1 秒的速度 k 必须在 [j-d, j+d] 范围内// 即速度变化不能超过 dfor(intk=max(0,j-d);k<=j+d;k++){// 转移:前 i-1 秒的路程 + 第 i 秒的路程 jf[i][j]=max(f[i][j],f[i-1][k]+j);}}}// 输出第 t 秒速度为 v2 时的最大总路程cout<<f[t][v2];return0;}

【运行结果】

5 6 4 2 26
http://www.jsqmd.com/news/1055662/

相关文章:

  • 盐城市盐都区桶装水配送哪家好 盐城花海山泉纯净水送水公司 13338937909 - 资讯速览
  • 阳台封窗的 N 种方式,家的颜值翻倍 南山铝材高端系统门窗会根据业主需求量身定制 - 涂伟
  • 2026本地AI Agent换芯实战:从OpenClaw到Hermes重构指南
  • 兰州黄金贵金属回收指南:六家靠谱门店,覆盖全域安心变现 - 新芸鼎珠宝首饰
  • Windows风扇智能控制终极指南:5个专业技巧与实战方案
  • Photon光影包:让Minecraft焕发真实光影的终极指南 [特殊字符]
  • 陪诊师收入怎么样?全职 / 兼职真实收益教科书级科普 - 深鉴新闻
  • Inkscape光线追踪扩展:3步搞定专业光学设计的终极指南
  • GOM Player缓冲区溢出漏洞:从原理分析到防御实践
  • 马鞍山六家黄金回收店铺实地考察靠谱店铺 - 清奢黄金上门回收
  • i.MX6裸机MIPI-CSI2图像采集实战:从D-PHY到IDMAC全流程配置
  • 天水黄金贵金属回收|六家靠谱店铺全城推荐 - 新芸鼎珠宝首饰
  • Ubuntu 12.04 SSH密钥配置实战:RSA 2048与PEM格式兼容指南
  • 2026 杭州黄金回收服务,免费估价无费用,上门到店均支持 - 讯息早知道
  • ExplorerPatcher:5分钟让Windows 11恢复经典操作体验的终极指南
  • PN532C106硬件设计与低功耗模式实战指南
  • 2026年想买高品质大溪地珍珠?这几家口碑靠谱商家可放心选购 - 资讯速览
  • MC68HC908AT32的MSCAN08控制器配置实战:从寄存器到CAN节点开发
  • Rocky Linux中为用户配置sudo权限的正确方法
  • SQL注入漏洞深度解析:从原理到实战,以29网课平台epay.php为例
  • Web自动化测试工具选型指南:Selenium、Cypress、Playwright与Puppeteer深度对比
  • NeRF引导3D高斯溅射实现高精度三维物体分割:原理、实现与调优
  • 抖音主播签约公会怎么避坑 - 舒雯文化
  • 寄行李杂物选哪家快递最省钱?2026最新比价攻略 - 快递物流资讯
  • 2026安徽省皖智中学最新借读官方简章已出! - 小张zc
  • 手机号逆向查QQ号:3分钟找回遗忘账号的终极指南
  • Burpsuite自动化越权检测插件:原理、配置与实战指南
  • 2026深圳名表回收全攻略:正规实体门店实测,百达翡丽劳力士极速变现 - 沉迷学习28
  • 武威黄金回收优选:六家靠谱店铺推荐,覆盖全市区县安心变现 - 新芸鼎珠宝首饰
  • Readest:用Next.js+Tauri打造的沉浸式阅读器,开源电子书的新标杆!