第十四届蓝桥杯第十题:蜗牛分享

2024-03-30 18:44

本文主要是介绍第十四届蓝桥杯第十题:蜗牛分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

输入格式

输出格式

输出共一行,一个浮点数表示答案(四舍五入保留两位小数)。

样例输入

3
1 10 11
1 1
2 1

样例输出

4.20

样例说明

蜗牛路线:(0,0)→(1,0)→(1,1)→(10,1)→(10,0)→(11,0)(0,0)→(1,0)→(1,1)→(10,1)→(10,0)→(11,0),花费时间为 1+10.7+0+11.3+1≈4.201+0.71​+0+1.31​+1≈4.20

根据题意可知该题涉及动态规划问题,所以我们结合代码进行讲解:

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {//第一步接收输入Scanner sc = new Scanner(System.in);//n个竹竿int n = sc.nextInt();double []x = new double[n];//接收n个竹竿的坐标for(int i=0;i<n;i++){x[i] = sc.nextInt();}//接收从第1跟竹竿到第n-1跟竹竿开始的魔法阵距离double [][] a= new double[n-1][2];for(int i=0;i<n-1;i++){for (int j = 0;j<2;j++){a[i][j] = sc.nextInt();}}//假如直接就可以到达if(n<2){System.out.printf("%.2f",x[0]);}//正常多竹竿else {//开始使用动态规划//分两个状态,一个使用魔法,一个不使用魔法//dp[i][0]不使用,dp[i][1]使用//1.确定状态double dp[][] = new double[n][2];//2.确定初始值for(int i = 0;i<n;i++){Arrays.fill(dp[i],Double.MAX_VALUE);}//不使用魔法到达第一个竹竿dp[0][0] = x[0];//使用魔法到达第一个竹竿dp[0][1] = x[0];//不使用魔法到达第二个竹竿dp[1][0] = x[1];//使用魔法到达第二个竹竿dp[1][1] = x[0] + a[0][0]/0.7;//3.确定状态转移方程//从第三竹竿到达第n根竹竿的规划for(int i=2;i<n;i++){//不使用魔法//前一个不使用魔法dp[i][0] = Math.min(dp[i][0],dp[i-1][0] + x[i] - x[i-1] );//前一根使用魔法dp[i][0] = Math.min(dp[i][0],dp[i-1][1] + a[i-2][1]/1.3 + x[i] - x[i-1]);//使用魔法dp[i][1] = Math.min(dp[i][1],dp[i-1][0] + a[i-1][0]/0.7);double k = 0.0;if(a[i-2][1] > a[i-1][0]){k = 1.3;}else k = 0.7;//注意我们的要的是差值不是走一整段魔法阵到地面的距离而是两个相邻魔法阵的距离dp[i][1] = Math.min(dp[i][1],dp[i-1][1] + Math.abs(a[i-2][1] - a[i-1][0])/k);}double result = Math.min(dp[n-1][0],dp[n-1][1] + a[n-2][1]/1.3);System.out.printf("%.2f",result);}}
}

当状态分析好以及状态方程定义好就成功了大半!

这篇关于第十四届蓝桥杯第十题:蜗牛分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/862283

相关文章

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表

Python中处理NaN值的技巧分享

《Python中处理NaN值的技巧分享》在数据科学和数据分析领域,NaN(NotaNumber)是一个常见的概念,它表示一个缺失或未定义的数值,在Python中,尤其是在使用pandas库处理数据时,... 目录NaN 值的来源和影响使用 pandas 的 isna()和 isnull()函数直接比较 Na

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

分享5款免费录屏的工具,搞定网课不怕错过!

虽然现在学生们不怎么上网课, 但是对于上班族或者是没有办法到学校参加课程的人来说,网课还是很重要的,今天,我就来跟大家分享一下我用过的几款录屏软件=,看看它们在录制网课时的表现如何。 福昕录屏大师 网址:https://www.foxitsoftware.cn/REC/ 这款软件给我的第一印象就是界面简洁,操作起来很直观。它支持全屏录制,也支持区域录制,这对于我这种需要同时录制PPT和老师讲

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s