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

【蓝桥杯每日一题】 蜗牛——动态规划

蜗牛

蓝桥杯每日一题 2024-12-23 蜗牛 动态规划

题目描述

今天,一只蜗牛来到了二维坐标系的原点。

在 x 轴上有 n 根竹竿。它们平行于 y 轴,底部纵坐标为 0,横坐标分别为 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,,xn。 竹竿的高度均为无限高,宽度可忽略。蜗牛想要从原点走到第 n 个竹竿的顶部,也就是坐标 ( x n , 0 ) (x_n, 0) (xn,0)
它只能沿 x 轴上或者竹竿上爬行,在 x 轴上爬行速度为 1   单位/秒 1 \, \text{单位/秒} 1单位/。 由于受到引力影响,蜗牛在竹竿上向上的爬行速度为 0.7   单位/秒 0.7 \, \text{单位/秒} 0.7单位/, 而向下的爬行速度为 1.3   单位/秒 1.3 \, \text{单位/秒} 1.3单位/

为了快速到达目的地,它施展了魔法,在第 i i i i + 1 i+1 i+1根竹竿之间建立了传送门 ( 0 < i < n ) (0 < i < n) (0<i<n)。 如果蜗牛位于第 i i i根竹竿的高度为 a i a_i ai的位置 ( x i , a i ) (x_i, a_i) (xi,ai), 就可以瞬间到达第 i + 1 i+1 i+1根竹竿的高度为 b i + 1 b_{i+1} bi+1的位置 ( x i + 1 , b i + 1 ) (x_{i+1}, b_{i+1}) (xi+1,bi+1)。 请计算蜗牛最少需要多少秒才能到达目的地。

解题思路

解题思路

基本实现思路已在图中表明。

Accepted
#include <iostream>
#include <iomanip>

using namespace std;

const int N = 100010,INF = 0x3f3f3f3f;
int t[N],n,a[N],b[N];
double f[N][2];

double get(int x,int y) {
    // x 是起点  y 是终点
    if(x > y) return (x-y)/1.3;
    else return (y-x)/0.7;
}
 
int main()
{
    cin>>n;
    for(int i = 1;i <= n;i++) {
        cin>>t[i];
    }
    for(int i = 1;i < n;i++) {
        cin>>a[i]>>b[i+1];
    }
    for(int i = 1;i <= n;i++) {
        f[i][0] = f[i][1] = INF;
    }

    f[1][0] = t[1];
    for(int i = 2;i <= n;i++) {
        int interval = t[i] - t[i-1]; // 间隔
        // 走到竹竿底部
        f[i][0] = min(f[i-1][0] + interval,f[i-1][1] + interval + get(b[i-1],0));

        // 走到竹竿的b[i]处
        f[i][1] = min(f[i-1][0] + get(0,a[i-1]),f[i-1][1] + get(b[i-1],a[i-1]));
    }
    cout<<fixed<<setprecision(2)<<min(f[n][0],f[n][1]+b[n]/1.3);
    return 0;
}
思考

这道题可以算是较为简单的动态规划,动态转移都是比较直接的,那么首先要观察的是答案该怎么求,然后从答案上递推之前的该怎么求;这道题最主要的是维护两个状态,分别计算,最后再求答案!

备赛交流

蓝桥杯备赛交流:可以+v:xiaoyu208H (备注:蓝桥杯)
想要一起讨论的可以添加!!!


http://www.kler.cn/a/449102.html

相关文章:

  • 深入解析 Spring Bean 配置与装配:从基础到进阶的实用指南
  • D102【python 接口自动化学习】- pytest进阶之fixture用法
  • Spring Security 6 系列之七 - 自定义异常管理
  • 重温设计模式--职责链模式
  • 基于SpringBoot的山西文旅网系统
  • 【数据结构练习题】链表与LinkedList
  • Redisson分布式锁的源码解读
  • panddleocr-文本检测+文本方向分类+文本识别整体流程
  • JavaAgent技术应用和原理:JVM持久化监控
  • ubuntu18.04连接不上网络问题
  • Spring Boot与Django对比:哪个更适合做为Web服务器框架?
  • 32岁前端干了8年,是继续做前端开发,还是转其它工作
  • 图像处理中的图像配准方法
  • 详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
  • 【PyQt5 02】基本功能(示例)
  • 作业:循环比赛日程表 与 取余运算(mod)
  • TensorFlow和Keras的区别和关系
  • GitCode 光引计划投稿|智能制造一体化低代码平台 Skyeye云
  • /etc/fstab 文件学习systemd与该文件关系
  • 开发整合笔记
  • 华为IPD流程6大阶段370个流程活动详解_第二阶段:计划阶段 — 86个活动
  • 基于Springboot的数字科技风险报告管理系统
  • 百度热力图数据处理,可直接用于论文
  • 层次聚类算法的研究
  • 江苏计算机专转本 技能Mysql知识点总结(三)
  • CTF-WEB php-Session 文件利用 [第一届国城杯 n0ob_un4er 赛后学习笔记]