【重拾计划】深搜广搜 | luogu P1135 奇怪的电梯

2023-10-04 17:47

本文主要是介绍【重拾计划】深搜广搜 | luogu P1135 奇怪的电梯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

luogu P1135 奇怪的电梯

  • 题目描述
  • 方法一 : 深搜dfs
  • 方法二:广搜bfs
  • 其他解法

题目描述

luogu P1135 奇怪的电梯
1

方法一 : 深搜dfs

从点A出发,找到符合条件的点一直往下搜即可

代码实现如下:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int n,a,b;
int ans=0x7fffffff;
int k[210],vis[210];
int minn(int x,int y)
{return x<y?x:y;
}
void dfs(int x,int step)
{if(step>ans) return;if(x==b) ans=minn(ans,step);int u=x+k[x],d=x-k[x];if(u>=1&&u<=n&&!vis[u]){vis[u]=1;dfs(u,step+1);vis[u]=0;}if(d>=1&&d<=n&&!vis[d]){vis[d]=1;dfs(d,step+1);vis[d]=0;}return ;
}
int main()
{cin>>n>>a>>b;for(int i=1;i<=n;++i) cin>>k[i];vis[a]=1;dfs(a,0);if(ans==0x7fffffff) ans=-1;cout<<ans<<endl;return 0;} 

方法二:广搜bfs

每个点扩展出最多两个点,广度优先,对于此题来说时间更优

代码实现如下:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int n,a,b,ans=-1,sum;
int f[2]={1,-1};
int que[1000010][2];
bool vis[210];
int k[210];
void bfs(int x)
{int h=0,t=1;que[t][0]=x; que[t][1]=0;vis[que[t][0]]=1;while(h<t){++h;for(int i=0;i<=1;++i){int x0=que[h][0]+k[que[h][0]]*f[i];if(x0>=1&&x0<=n&&!vis[x0]){++t; que[t][1]=que[h][1]+1;vis[x0]=1;que[t][0]=x0; //printf("que[%d]=%d \n",t,que[t]);if(x0==b){h=t; sum=que[t][1]; break;}}}}
}
int main()
{cin>>n>>a>>b;for(int i=1;i<=n;++i) cin>>k[i];if(a==b) ans=0;else bfs(a);if(sum!=0) ans=sum;cout<<ans<<endl;return 0;
} 

ps:用数组模拟的队列没有用 q u e u e queue queue,还请各位 d a l a o dalao dalao不要红温(

其他解法

本题可以看成一张图,用图论的知识去解决,看到了一位 d a l a o dalao dalao的文章,放在这里供各位自行参考:

P1135 奇怪的电梯【一题多解】https://www.luogu.com.cn/blog/virus2017/solution-p1135

这篇关于【重拾计划】深搜广搜 | luogu P1135 奇怪的电梯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

uva 10801(乘电梯dijkstra)

题意: 给几个电梯,电梯0 ~ n-1分别可以到达很多层楼。 换乘电梯需要60s时间。 问从0层到target层最小的时间。 解析: 将进入第0层的电梯60s也算上,最后减。 坑点是如果target为0输出0。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algori

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

Claude Enterprise推出计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/ 今天推出的Claude Enterprise计划,专为企业打造安全的

为备份驱动器制定备份计划:维护数据的3大方法

时间:2014-02-26 14:49 来源:网管之家 字体:[大 中 小]   您可能已经对您的电脑进行了备份,但其实这样还是远远不够的,其并非如您所认为的那样安全。您企业备份驱动器上的文件可能与您的主系统上的文件一样,容易受到灾难的影响。根据最近流行的恶意软件CryptoLocker的感染途径显示,连接到PC的外置驱动器——辅助硬盘驱动器,例如,用于备份的外部USB硬盘驱动器,可以像

基于开源链动 2 + 1 模式、AI 智能名片与 S2B2C 商城小程序的用户忠诚度计划

摘要:本文深入探讨了在商业环境中执行用户忠诚度计划的创新途径。通过整合开源链动 2 + 1 模式、AI 智能名片以及 S2B2C 商城小程序等先进元素,从提供福利、解决问题和创造赚钱机会三个核心方面展开详细阐述。研究表明,这些新技术和新模式的有机结合,能够为企业打造更具吸引力和影响力的用户忠诚度计划,从而实现商业效益的最大化与可持续发展。 一、引言 在当今竞争激烈且市场环境快速变化的时代,

FHQ Treap模版(luogu P3369)

FHQ Treap模版(自用),带注释 #include<bits/stdc++.h>using namespace std;const int N=1e5+10;int n,root,idx;struct node{int l,r;int val,key,size;}tr[N];int getnew(int v){tr[++idx].val=v;//权值tr[idx].key=rand(

[置顶] 2014训练计划进阶版

动态规划: 区间dp,树状dp,数位dphdu3555, sgu258, sgu390  队列优化: zoj3399 最小表示法的状态压缩DP: spoj2159  专题链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=38881#overview 专题链接: http://acm.hust.edu.cn/vjudg

[置顶] 2014训练计划

每个专题结束后会有5小时的专题赛~ 1、hustOJ目前支持谷歌、火狐浏览器等部分浏览器。 2、欢迎吐槽~ 3、推荐该阶段用书(以下具体算法实现多数可在此书中找到详解):算法竞赛入门经典之训练指南(刘汝佳) 4、题解报告:专题中的题目多是经典题目,百度搜索即有详细解答~ 5、专题相关知识点红字标出,建议先百度红字部分,有助于专题学习~ 6、专题时间会在"ACM 今天你AC了吗?"(12

Windows 一键定时自动化任务神器 zTasker,支持语音报时+多项定时计划执行

简介 zTasker(详情请戳 官网)是一款完全免费支持定时、热键或条件触发的方式执行多种自动化任务的小工具,支持win7-11。其支持超过100种任务类型,50+种定时/条件执行方法,而且任务列表可以随意编辑、排列、移动、更改类型,支持任务执行日志,可覆盖win自带的热键,同时支持任务列表等数据的备份及自动更新等。 简言之,比微软系统自带的任务计划要强好几倍,至少灵活性高多了,能大幅提高电脑使

【Oracle篇】全面理解优化器和SQL语句的解析步骤(含执行计划的详细分析和四种查看方式)(第二篇,总共七篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️ 💖💖💖大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注💖💖💖 SQL优化续新篇,第二篇章启幕时。 优化器内藏奥秘,解析SQL步