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

「蓝桥杯题解」蜗牛(Java)

题目链接

这道题我感觉状态定义不太好想,需要一定的经验

import java.util.*;
/**
 * 蜗牛
 * 状态定义:
 * dp[i][0]:到达(x[i],0)最小时间
 * dp[i][1]:到达 xi 上方的传送门最小时间
 */

public class Main {
    static Scanner in = new Scanner(System.in);
    static final int N = 100010,INF = 0x3f3f3f3f;
    static int n;
    static int[] x = new int[N];
    static double[][] dp = new double[N][2];
    static int[] a,b;
    public static void main(String[] args) {
        n = in.nextInt();
        a = new int[n+1];
        b = new int[n+1];
        for (int i = 1;i <= n;i++) {
            x[i] = in.nextInt();
        }
        for (int i = 1;i <= n-1;i++) {
            a[i] = in.nextInt();
            b[i] = in.nextInt();
        }
        for (int i = 2;i <= n;i++) {
            dp[i][0] = dp[i][1] = INF;
        }
        dp[1][0] = x[1];
        dp[1][1] = x[1] + a[1]/0.7;
        for (int i = 2;i <= n;i++) {
            // 到达i底部有两种办法
            // 1.从i-1底部爬过来
            // 2.从i-1的传送门过来,然后再爬下来
            dp[i][0] = Math.min(dp[i-1][0] + x[i] - x[i-1],dp[i-1][1] + b[i-1]/1.3);
        
            // 到达i上方传送门有两种办法
            // 1.从i-1的传送门过来,然后向上or向下爬
            // 2.从i底部爬上来
            double time = 0.0; // 从i-1传送过来的位置爬到i的传送门的时间
            if (b[i-1] < a[i]) time = (a[i] - b[i-1])/0.7;
            else time = (b[i-1] - a[i])/1.3;
            dp[i][1] = Math.min(dp[i][0] + a[i]/0.7,dp[i-1][1] + time);
        }
        System.out.printf("%.2f",dp[n][0]);
    }
}


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

相关文章:

  • 【腾讯云】腾讯云docker搭建单机hadoop
  • 从 UTC 日期时间字符串获取 Unix 时间戳:C 和 C++ 中的挑战与解决方案
  • NLP自然语言处理通识
  • 安装zsh并美化
  • C++ 3
  • 【Rust自学】14.6. 安装二进制crate
  • 全志开发板 视频输入框架
  • Rust:如何动态调用字符串定义的 Rhai 函数?
  • 基于Django的豆瓣影视剧推荐系统的设计与实现
  • MacOS 如何映射快捷键
  • 以太网详解(六)OSI 七层模型
  • MVCC底层原理实现
  • Java 注解与元数据
  • WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理
  • LiteFlow Spring boot使用方式
  • qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别
  • D. Unique Median【Codeforces Round 997 (Div. 2)】
  • 基于GS(Gaussian Splatting)的机器人Sim2Real2Sim仿真平台
  • 七种RAG架构cheat sheet!
  • BGP边界网关协议(Border Gateway Protocol)Community属性
  • RLHF技术演进:从理论突破到工程实践
  • 探索与创新:DeepSeek R1与Ollama在深度研究中的应用
  • 【PySide6快速入门】QListWidget 列表控件
  • 【现代深度学习技术】深度学习计算 | 层和块
  • 什么是哈希表?如何在C语言中实现一个哈希表?
  • Codeforces Round 642 (Div. 3) E. K-periodic Garland(DP+前缀和)