【算法】过桥

✨题目链接:

过桥


✨题目描述 

 

✨输入描述:

第一行一个数n(2≤n≤2000)
接下来一行n个数a[i](1≤|a[i]|≤2000)表示浮块上的数字

✨输出描述:

 输出一行,表示对应的答案

✨示例1

📍输入

4
2 2 -1 2 

📍输出

 2

📍说明

 1跳到2,1s 2跳到4,1s 共2s 

✨示例2

📍输入

 2
-1 -2

📍输出

 -1

✨解题思路

 贪心+bfs:

  • 初始化

    • leftright 初始化为1,表示从第一个浮块开始。
    • ret 初始化为0,记录当前传送的步数。
  • 循环条件

    • left 小于等于 right 时,进入循环。每一轮循环表示一次传送。
  • 步数递增

    • 每进入一次循环,步数 ret 加1。
  • 更新右边界

    • r 初始化为 right 的当前值。
    • 遍历当前传送范围 [left, right] 内的所有浮块,计算每个浮块能到达的最远位置 arr[i] + i
    • 更新 r 为最远的浮块位置。
  • 检查到达终点

    • 如果最远位置 r 大于等于 n,表示可以到达或超过 n 号浮块,返回当前步数 ret
  • 更新左右边界

    • 更新 leftright + 1,表示进入下一轮传送的起点。
    • 更新 right 为当前最远位置 r
  • 返回无法到达的情况

    • 如果循环结束后,仍未能到达 n 号浮块,返回 -1

✨代码
 

#include <iostream>
using namespace std;
const int N=2010;
int n;
int arr[N];int bfs()
{int left=1,right=1;int ret=0;while(left<=right){ret++;int r=right;for(int i=left;i<=right;i++){r=max(r,arr[i]+i);if(r>=n)return ret;}left=right+1;right=r;}return -1;
}
int main() 
{cin>>n;for(int i=1;i<n;i++)cin>>arr[i];cout<<bfs()<<endl;return 0;
}


※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端经典手写面试题---节流防抖

防抖 定义: n 秒后在执行该事件&#xff0c;若在 n 秒内被重复触发&#xff0c;则重新计时。 场景: 搜索框搜索输入。只需用户最后一次输入完&#xff0c;再发送请求手机号、邮箱验证输入检测窗口大小resize。只需窗口调整完成后&#xff0c;计算窗口大小。防止重复渲染。 实…

HNCTF 2024 ez_pecp 冰蝎+CS流量分析

考点:冰蝎webshell流量分析CS4.x流量解密 给了两个 流量包 第一个 ctf1.pcapng 查看其HTTP请求 而在CS中流量特征是基于tls协议 http-beacon 通信中&#xff0c;默认使用 GET 方法向 /dpixel 、/__utm.gif 、/pixel.gif 等地址发起请求&#xff0c;而且下发指令的时候会请求 …

如何使用浔川AI翻译机?——浔川AI社

1 前言 对于“如何使用浔川AI翻译机&#xff1f;”这个问题&#xff0c;我们官方 总结出以下结论&#xff1a; 首先&#xff1a; 复制以下代码&#xff1a; # -*- coding: utf-8 -*- import tkinter as tk import tkinter.messagebox import pickle import random# 窗口 wi…

Springboot校验集合是否为空,校验集合内对象参数

一、示例1 public AjaxResult saveQuoted(RequestBody NotEmpty List< Valid HisParam> list) {}二、示例2 public class Comment {NotNull(message "orderId 不能为空")private Long orderId;ValidNotEmpty(message "itemList不能为空")private…

Jmeter压测中遇到的问题汇总

Jmeter使用过程问题总结 一、某个请求的请求体中有中文字段&#xff0c;执行后该请求无法成功 解决方法&#xff1a;在取样器的内容编码处加上UTF-8 二、遇到接口请求后报401&#xff0c;请求未授权&#xff08;或者信息头管理器只写了cookie请求不成功&#xff09; 解决方…

记录深度学习GPU配置,下载CUDA与cuDnn,安装tensorflow

目标下载: cuda 11.0.1_451.22 win10.exe cudnn-11.0-windows-x64-v8.0.2.39.zip Anaconda的安装请看别的博主的,这里不再赘述 看看自己电脑的cuda 方法一:打开英伟达面板查看 方法二:使用命令行 随便找个文件夹,在顶部路径输入"cmd" 输入下面命令 nvidia-smi 我…

【TensorFlow深度学习】深度学习中的梯度传播机制解析

深度学习中的梯度传播机制解析 反向传播基础理论概览梯例&#xff1a;Sigmoid激活函数的梯度传播实战例代码结构反向传播机制的精髓结语 深度学习中的梯度传播机制&#xff1a;揭秘神经网络的核心算法 深度学习的兴起&#xff0c;离不开一个至关重要的算法——反向传播&#xf…

2406C++,ADL加隐式转换

原文 最近在搞iguana.struct_pb动态反射功能时,遇见一个奇怪的问题. struct person {std::string name;int64_t age; }; REFLECTION(person, name, age); struct persons {std::vector<person> list; }; REFLECTION(persons, list); //#1 static_assert(iguana::is_publ…

小程序配置自定义tabBar及异形tabBar配置操作

什么是tabBar&#xff1f; 小程序的tabbar是指小程序底部的一组固定导航按钮&#xff0c;通常包含2-5个按钮&#xff0c;用于快速切换小程序的不同页面。每个按钮都有一个图标和文本标签&#xff0c;点击按钮可以切换到对应的页面。tabbar通常放置在小程序的底部&#xff0c;以…

vue 权限分组

在权限设计时&#xff0c;分为部门、岗位、人员三部分&#xff0c; 人员下面挂部门&#xff0c;部门下面挂岗位&#xff0c;岗位下面挂菜单&#xff0c;用户在进行授权时&#xff0c;勾选了操作权限&#xff0c;默认数据权限也进行勾选。 权限组&#xff1a;查询、新增、修改、…

开发一套家政上门预约服务系统需要运用的关键技术

家政上门预约服务系统开发是指建立一个在线平台或应用程序&#xff0c;用于提供家政服务的预约和管理功能。该系统的目标是让用户能够方便地预约各种家政服务&#xff0c;如保洁、家庭护理、月嫂、家电维修等&#xff0c;并实现服务供应商管理和订单管理等功能。 开发一套家政上…

01Linux以及操作系统概述

课程目标 1.了解现代操作系统的整体构成及发展历史 2.了解Linux操作系统及其分支版本 3.直观上理解服务器端与桌面端版本的区别 课程实验 1.通过对CentOS和Ubuntu的演示&#xff0c;直观理解Linux与Windows的异同 课堂引入 本章内容主要为大家详细讲解Linux操作系统(以下简…

PPT 隐藏开启对象图层

目录预览 一、问题描述二、解决方案三、参考链接 一、问题描述 制作PPT的时候&#xff0c;有时候需要在一张PPT放置多个依次出现的内容&#xff0c;然后设置对应的动画&#xff0c;要是需要对某个内容进行修改的话&#xff0c;就会很不方便&#xff0c;这个时候就需要使用&…

flutter 自定义本地化-GlobalMaterialLocalizations(重写本地化日期转换)

1. 创建自定义 GlobalMaterialLocalizations import package:flutter_localizations/flutter_localizations.dart; import package:kittlenapp/utils/base/date_time_util.dart;///[auth] kittlen ///[createTime] 2024-05-31 11:40 ///[description]class MyMaterialLocaliza…

基于SpringBoot的旅游攻略信息系统的设计与实现

文档介绍 用户群体 针对已经学习过SpringBoot的同学,希望通过一个项目来加强对框架的应用能力,增加项目经验 针对需要完成大学期间的毕设项目的同学,可以通过此文档了解整个系统技术架构,为自己的毕设论文提供指导性建议 文档内容 此文档内容可以让学习此实战项目的同学有一…

有效2,关闭 Microsoft Defender 实时保护,u盘启动进入pe

将以下文件夹改名 “C:\Program Files\Windows Defender” “C:\Program Files\Windows Defender Advanced Threat Protection” “C:\Program Files (x86)\Windows Defender” “C:\ProgramData\Microsoft\Windows Defender” “C:\ProgramData\Microsoft\Windows Securi…

webshell代码免杀

1.什么是WAF? Web Application Firewal(web应用防火墙)&#xff0c;web应用防火通过执行一系列针对HTTP/HTTPS的安全策略来专门为web应用提供保护的一款产品&#xff0c;基本可以分为以下4种 软件型WAF&#xff1a;以软件的形式安装在服务器上面&#xff0c;可以接触到服务器…

Java高级---Spring Boot---4核心概念

4 核心概念 4.1 Spring Boot的自动配置详解 自动配置 是 Spring Boot 的核心特性之一&#xff0c;它允许框架根据项目中添加的依赖自动配置应用程序。 EnableAutoConfiguration: 这个注解是自动配置的入口点&#xff0c;它告诉 Spring Boot 根据类路径上的库来自动配置 Spri…

MAB规范(1):概览介绍

前言 MATLAB的MAAB&#xff08;MathWorks Automotive Advisory Board&#xff09;建模规范是一套由MathWorks主导的建模指南&#xff0c;旨在提高基于Simulink和Stateflow进行建模的代码质量、可读性、可维护性和可重用性。这些规范最初是由汽车行业的主要厂商共同制定的&…

c#基础()

学习目标 了解&#xff1a;嵌套类&#xff0c;匿名类&#xff0c;对象初始化器 重点&#xff1a;类的定义以及对象&#xff0c;构造方法&#xff0c;this和static关键字 掌握&#xff1a;面向对象的概念&#xff0c;访问修饰符&#xff0c;垃圾回收 面向对象 面向对象的概…