洛谷P1135题解

题目背景

感谢 @yummy 提供的一些数据。

题目描述

呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第 i 层楼(1≤i≤N)上有一个数字 K[i]​(0≤K[i]​≤N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如: 3,3,1,2,5 代表了 K[i]​(K[1]​=3,K[2]​=3,……),从 1 楼开始。在 1 楼,按“上”可以到 4 楼,按“下”是不起作用的,因为没有 −2 楼。那么,从 A 楼到 B 楼至少要按几次按钮呢?

输入格式

共二行。

第一行为三个用空格隔开的正整数,表示 N,A,B(1≤N≤200,1≤A,B≤N)。

第二行为 N 个用空格隔开的非负整数,表示 K[i]​。

输出格式

一行,即最少按键次数,若无法到达,则输出 -1

输入输出样例

输入 #1

5 1 5
3 3 1 2 5

输出 #1

3

说明/提示

对于 100% 的数据,1≤N≤200,1≤A,B≤N,0≤K[i]​≤N。

本题共 16 个测试点,前 15 个每个测试点 6 分,最后一个测试点 10 分。

思路

从 A 开始,搜索每一条路,可以更新答案再继续搜索,不然会搜索多余导致 TLE(超时)。

AC Code

#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[201],dis[201];
void dfs(int node,int step){dis[node]=step;int v=node-k[node];if(1<=v&&step+1<dis[v])dfs(v,step+1);v=node+k[node];if(v<=n&&step+1<dis[v])dfs(v,step+1);return;
}
int main(){memset(dis,0x3f,sizeof(dis));cin>>n>>a>>b;for(int i=1;i<=n;i++)cin>>k[i];dfs(a,0);cout<<(dis[b]==0x3f3f3f3f?-1:dis[b]);return 0;
}

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

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

相关文章

最新红盟云卡个人自动发卡开源系统源码优化版

红盟云卡系统是云商学院旗下的一款基于 PHPMySQL 开发的虚拟商品在线售卖平台。它是一款漂亮且功能丰富的发卡网站&#xff0c;可以与社区进行对接。该系统完全开源且无任何加密&#xff0c;可商业使用&#xff0c;并支持个人免签多个接口。 下载地址&#xff1a;优化版.zip

【JavaEE Spring 项目】在线 OJ 系统

在线OJ系统 1. 需求2. 最终页面展示3. 需求分析4. 创建 Spring 项目5. 前后端交互接口约定6. 后端功能实现6.1 编译运行模块6.1.1 进程和线程的相关知识6.1.2 Java 中的多进程编程6.1.3 进程间通信 -- 文件6.1.4 Java中的 IO 知识6.1.5 封装创建进程执行命令工具类6.1.6 实现编…

项目:shell实现多级菜单脚本编写

目录 1. 提示 2. 演示效果 2.1. 一级菜单 2.2. 二级菜单 2.3. 执行操作 3. 参考代码 1. 提示 本脚本主要实现多级菜单效果&#xff0c;并没有安装LAMP、LNMP环境&#xff0c;如果要用在实际生成环境中部署LNMP、LAMP环境&#xff0c;只需要简单修改一下就可以了。 2. 演…

C#高级--设计模式(七个原则)

一、单一职责原则 原理&#xff1a; 单一职责原则即&#xff1a;对于一个类而言&#xff0c;应该仅有一个引起他变化的原因。换言之&#xff0c;一个类只负责一个功能领域中的相应职责。 单一职责原则是实现高内聚、低耦合的指导方针&#xff0c;它是最简单但又最难运用的原则…

keepalived+HAProxy+MySQL双主实验

keepalivedHAProxyMySQL双主实验 环境准备 node1(HAProxy1):192.168.184.10 node2(HAProxy2):192.168.184.20 node3(MySQL1):192.168.184.30 node4(MySQL2):192.168.184.40 虚拟IP vip&#xff1a;192.168.184.100MySQL部署 在node3执行以下脚本&#xff1a; #!/bin/bash sy…

具身智能(Embodied AI)的概念、核心要素、难点及突破性进展

在ChatGPT之后&#xff0c;具身智能&#xff08;Embodied AI&#xff09;这个大模型概念火了&#xff0c;那什么是具身智能呢&#xff1f; 什么是具身智能&#xff1f; 具身智能作为人工智能发展的一个重要分支&#xff0c;正在迅速崭露头角&#xff0c;成为科技界和大众关注…

c++ http操作接口

很简单的使用libcurl来操作http与服务器来通讯&#xff0c;包含http与https&#xff0c;对外只开放 #include "request.h" #include "response.h" #include "url.h" 三个头文件&#xff0c;简单易用&#xff0c;使用的实例如下&#xff1a; vo…

【Linux】部署单机项目(自动化启动)

目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.部署项目 一.jdk安装 1.上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录&#xff0c;将安装包拖进去 2.解压安装包 防止后面单个系列解压操作&#xff0c;我这边就直接将所有的要用的全部给解压&#xff0c;如下图注…

【数据集】世界水评估方案指标:灌溉面积/灌溉用水等

世界水评估方案指标 概述(Overview)数据下载(Data Download)案例1:F. Irrigated lands案例2:G. Irrigated water use参考World Water Development Report II-Indicators for World Water Assessment Programme 概述(Overview) 在关于全球环境变化和可持续发展的辩论…

(详细使用指南)Linux下交叉编译带ffmpeg的opencv并移植到RK3588等ARM端

一 问题背景 瑞芯微RK3588等嵌入式板作为边缘端设备为算法模型的部署提供了便利&#xff0c;目前很多分类或好检测模型针对边缘端做了优化或量化&#xff0c;使得在边缘端也能达到实时稳定的识别和检测效果。 但嵌入式设备普遍的flash emmc不大&#xff0c;一般在32G左…

Jitsi Meet 大型视频会议调优方案

jitsi meet 大型视频会议调优方案 在举办一些大型会议的时候,比如100个人会议,为了节约宽带和节省资源,我们并不会选择传输全部的音视频资源。 举个例子,比如100个人线下会议,如果大家都说话的情况下,大家要么听不清,要么听得是声音最大的那几个人。 视频会议也可以借…

Linux开发:pam5 Ubuntu22.04中编译linux-pam

Ubuntu22.04中使用的是linux-pam GitHub - linux-pam/linux-pam: Linux PAM (Pluggable Authentication Modules for Linux) project linux-pam不仅包含了源代码还有相关的文档以及例子&#xff0c;是学习pam的一个很好的参考。 编译linux-pam的方法&#xff1a; 1.下载源代码…

Java多线程系列——JDK并发包

Java并发编程是Java开发中不可或缺的一部分&#xff0c;它允许开发者编写能够同时执行多个任务的应用程序&#xff0c;提高了程序的执行效率和响应速度。自从Java 5开始&#xff0c;java.util.concurrent包成为了并发编程的核心&#xff0c;引入了多种并发工具类&#xff0c;使…

Redis3种特殊数据结构详解

文章目录 前言一、地理空间&#xff08;Geospatial&#xff09;&#xff1a;二、HyperLogLogs&#xff1a;二、位图&#xff08;Bitmaps&#xff09;&#xff1a;总结 前言 当我们探索Redis时&#xff0c;除了常见的键值存储功能外&#xff0c;还存在一些特殊类型&#xff0c;…

突破编程_C++_面试(函数(1))

面试题1&#xff1a;函数定义与声明有什么区别&#xff1f; 函数定义与声明的区别主要体现在以下几个方面&#xff1a; 内存分配&#xff1a; 定义&#xff1a;函数定义会为函数分配内存空间&#xff0c;并且可能会为函数内部的局部变量分配内存。定义提供了函数在程序中的唯一…

Mysql运维篇(五) 部署MHA--主机环境配置

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 大佬博文 https://www.cnblogs.com/gomysql/p/3675429.html MySQL 高可用&#xff08;MHA&#x…

SpringMVC 学习(五)之域对象

目录 1 域对象介绍 2 向 request 域对象共享数据 2.1 通过 ServletAPI (HttpServletRequest) 向 request 域对象共享数据 2.2 通过 ModelAndView 向 request 域对象共享数据 2.3 通过 Model 向 request 域对象共享数据 2.4 通过 map 向 request 域对象共享数据 2.5 通过…

【前端素材】推荐优质后台管理系统Jampack平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

macOS系统下载IDEA的操作流程

第一步 进入官网 Download IntelliJ IDEA – The Leading Java and Kotlin IDE 第二步 根据mac的芯片选择版本下载 芯片的查看位置是【设置】-【通用】-【关于本机】-第二个&#xff0c;我的是Apple芯片&#xff0c;选Apple Silicon -- 第三步 右上角下载处打开安装包&…

C++——基础复习——双色球

跟着哔站的视频复习一遍基础知识&#xff0c;根据老师的思路写双色球项目。相较老师的程序加入了一些功能。没有用到模板知识&#xff0c;欢迎交流。 1、6个红球1个蓝球&#xff0c;红球号码1-33&#xff0c;号码不重复&#xff1b;篮球号码1-15. 2、自选号码功能&#xff1a…