news 2026/2/3 3:17:52

AtCoder Beginner Contest竞赛题解 | 洛谷 AT_abc436_d Teleport Maze

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AtCoder Beginner Contest竞赛题解 | 洛谷 AT_abc436_d Teleport Maze

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:AtCoder Beginner Contest竞赛题解 | 汇总


【题目来源】

洛谷:[AT_abc436_d ABC436D] Teleport Maze - 洛谷

【题目描述】

There is a maze consisting of a grid with $ H $ rows and $ W $ columns. Let $ (i,j) $ denote the cell at the $ i $ -th row from the top and $ j $ -th column from the left. The type of cell $ (i,j) $ is given as a character $ S_{i,j} $ , where each character has the following meaning:

  • .: Empty cell
  • #: Obstacle cell
  • Lowercase English letter (a-z): Warp cell

In the maze, you can perform the following two types of actions any number of times in any order:

  • Walk: Move from the current cell to a cell that is one cell away in one of the four directions (up, down, left, right). However, you cannot move to an obstacle cell or outside the grid.
  • Warp: When you are at a warp cell, move to any warp cell with the same character written on it.

Determine whether it is possible to move from cell $ (1,1) $ to cell $ (H,W) $ , and if possible, find the minimum total number of actions required.

【输入】

The input is given from Standard Input in the following format:

$ H $ $ W $ $ S_{1,1}S_{1,2}\dots S_{1,W} $ $ \vdots $ $ S_{H,1}S_{H,2}\dots S_{H,W} $

【输出】

If it is possible to move from cell $ (1,1) $ to cell $ (H,W) $ , print the minimum total number of actions required; otherwise, print-1.

【输入样例】

3 4 ..a. #### ba#b

【输出样例】

5

【算法标签】

《洛谷 AT_abc436_d Teleport Maze》 #广度优先搜索BFS#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=1005;// 最大网格大小typedefpair<int,int>PII;// 坐标对inth,w;// 网格高度和宽度chara[N][N];// 网格内容intdist[N][N];// 从起点到每个点的最短距离boolvis[N][N];// 访问标记(未使用)intdx[4]={-1,1,0,0};// 上下左右方向intdy[4]={0,0,-1,1};vector<PII>ve[30];// 存储每种小写字母的位置boolst[30];// 标记每种字母是否已使用过传送功能/** * BFS求从(1,1)到(h,w)的最短路径 * 支持普通移动和特殊传送 */voidbfs(){queue<PII>q;q.push({1,1});// 起点dist[1][1]=0;// 起点距离为0while(!q.empty()){intx=q.front().first,y=q.front().second;q.pop();// 如果当前格是小写字母,且该字母的传送功能未使用过if(islower(a[x][y])&&st[a[x][y]-'a']==false){// 遍历该字母对应的所有传送点for(auto[x2,y2]:ve[a[x][y]-'a']){// 如果目标点未访问过if(dist[x2][y2]==-1){// 距离为当前位置距离+1dist[x2][y2]=dist[x][y]+1;// 加入队列q.push({x2,y2});}}// 标记该字母的传送功能已使用st[a[x][y]-'a']=true;}// 四个方向普通移动for(inti=0;i<4;i++){intnx=x+dx[i],ny=y+dy[i];// 边界检查if(nx<1||nx>h||ny<1||ny>w)continue;// 障碍物检查if(a[nx][ny]=='#')continue;// 已访问检查if(dist[nx][ny]!=-1)continue;// 入队并更新距离q.push({nx,ny});dist[nx][ny]=dist[x][y]+1;}}}intmain(){// 输入网格大小cin>>h>>w;// 初始化距离为-1(表示未访问)memset(dist,-1,sizeof(dist));// 读入网格并预处理字母位置for(inti=1;i<=h;i++){for(intj=1;j<=w;j++){cin>>a[i][j];// 如果是小写字母,记录其位置if(islower(a[i][j])){ve[a[i][j]-'a'].push_back({i,j});}}}// BFS求最短路径bfs();// 输出结果if(dist[h][w]==-1){cout<<-1<<endl;// 不可达}else{cout<<dist[h][w]<<endl;// 最短距离}return0;}

【运行结果】

3 4 ..a. #### ba#b 5
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/31 8:35:10

(Open-AutoGLM体积压缩终极指南):从入门到生产级落地的完整路径

第一章&#xff1a;Open-AutoGLM体积压缩终极指南概述Open-AutoGLM 是一款面向大语言模型自动压缩与优化的开源工具&#xff0c;专注于在保持模型推理性能的同时显著减小其存储体积和计算开销。该工具集成了量化、剪枝、知识蒸馏等多种压缩技术&#xff0c;支持灵活配置策略组合…

作者头像 李华
网站建设 2026/2/3 2:12:02

Open-AutoGLM部署难题全解析,手把手教你避开99%的常见坑

第一章&#xff1a;Open-AutoGLM部署流程简化在快速发展的AI工程实践中&#xff0c;Open-AutoGLM作为一款支持自动化推理与模型调优的开源框架&#xff0c;其部署效率直接影响开发迭代速度。通过容器化与配置预设机制&#xff0c;可显著降低环境依赖复杂度&#xff0c;实现一键…

作者头像 李华
网站建设 2026/2/3 3:14:42

为什么顶尖团队都在用Open-AutoGLM做错误聚类?(内部分类算法首曝)

第一章&#xff1a;Open-AutoGLM错误类型精准分类的行业意义在人工智能与自然语言处理快速演进的背景下&#xff0c;大模型推理过程中的错误识别与归因成为保障系统可靠性的关键环节。Open-AutoGLM作为面向自动化推理优化的开源框架&#xff0c;其核心能力之一在于对模型输出错…

作者头像 李华
网站建设 2026/2/2 16:23:11

【Open-AutoGLM性能优化终极指南】:详解9大核心测试指标与调优策略

第一章&#xff1a;Open-AutoGLM性能测试指标概述在评估 Open-AutoGLM 模型的综合能力时&#xff0c;需依赖一系列科学、可量化的性能测试指标。这些指标不仅反映模型在自然语言理解与生成任务中的表现&#xff0c;还揭示其在推理效率、资源消耗和稳定性方面的特性。核心评估维…

作者头像 李华
网站建设 2026/2/3 0:51:36

Excalidraw在教育领域的创新应用场景

Excalidraw在教育领域的创新应用场景 如今的课堂早已不再局限于黑板与粉笔。当一节“计算机网络”课上&#xff0c;教师只需说出“画一个TCP三次握手的过程”&#xff0c;几秒钟后&#xff0c;清晰的流程图便出现在共享白板上——学生不仅能实时看到图形生成&#xff0c;还能立…

作者头像 李华
网站建设 2026/1/31 11:19:58

【Open-AutoGLM错误分类终极指南】:精准识别9种核心异常类型及修复方案

第一章&#xff1a;Open-AutoGLM错误类型精准分类概述在构建和优化基于大语言模型的自动化系统时&#xff0c;Open-AutoGLM作为核心推理引擎&#xff0c;其稳定性与准确性高度依赖于对运行过程中各类错误的精准识别与分类。错误类型的系统化归类不仅有助于快速定位问题根源&…

作者头像 李华