当前位置: 首页 > news >正文

洛谷 P10234 [yLCPC2024] B. 找机厅 题解

题目链接

洛谷 P10234 [yLCPC2024] B. 找机厅

思路分析

这题关键是找到路径。在普通 bfs 时,我们会从一个点转移到多个其它的点去,而我们只要记录下是从哪个点转移过来的即可。在这里我使用手写队列,通过结构体多开一个元素记录从哪个下标对应的点转移过来。这样找到答案时,只需要再反向退回去即可。

另外这里由于是反向,所以会在答案字符串前增加元素。推荐先加在最后得到顺序相反的字符串,再调用 reverse 函数,时间复杂度为 \(O(n^2)\)(最多可能走的点不会超过 \(n^2\) 个)。如一直加在最前面,就变成 \(O(n^3)\),会超时。

代码呈现

#include<bits/stdc++.h>
using namespace std;
struct node{int x,y,pre;
};const int N=2010,M=4e6+10;
int t,n,m;
int mp[N][N],dx[]={1,-1,0,0},dy[]={0,0,1,-1};
bool a[N][N];
node q[M];string bfs(){ // 返回如何转移,步数即为字符串长度int head=0,tail=-1;q[++tail]={1,1,-1},mp[1][1]=0;while (head<=tail){int ux=q[head].x,uy=q[head].y;if (ux==n && uy==m){string s="";node u=q[head],v;while (u.pre!=-1){ // 逆向找答案v=q[u.pre];if (u.x-v.x==-1 && u.y-v.y==0) s+='U';else if (u.x-v.x==1 && u.y-v.y==0) s+='D';else if (u.x-v.x==0 && u.y-v.y==-1) s+='L';else s+='R';u=v;}reverse(s.begin(),s.end());return s;}for (int i=0;i<4;++i){int nx=ux+dx[i],ny=uy+dy[i];if (nx>0 && nx<=n && ny>0 && ny<=m && a[nx][ny]!=a[ux][uy] && mp[nx][ny]==-1)mp[nx][ny]=mp[ux][uy]+1,q[++tail]={nx,ny,head};}++head;}return "-1"; // 无解
}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>t;while (t--){cin>>n>>m;for (int i=1;i<=n;++i){for (int j=1;j<=m;++j){char c;cin>>c;a[i][j]=(c=='1');}}memset(mp,-1,sizeof mp);string s=bfs();if (s=="-1") cout<<-1<<'\n';else cout<<s.size()<<'\n'<<s<<'\n';}return 0;
}
http://www.jsqmd.com/news/330253/

相关文章:

  • 蓝易云 :Deepin添加Ubuntu源
  • 探寻2026优质水性香薰:实力精油供应商深度评测,喷雾香薰/疗愈香氛/油性香氛精油/香薰纸片,精油OEM企业有哪些
  • 2026年市面上有实力的投影机出租供应厂家推荐,6000流明投影机/全息投影机/34000流明投影机,投影机出租厂家推荐
  • 端菜鸟别再乱用getElement了!querySelector全家桶真香指南(附避坑技巧)
  • 蓝易云 :Spring redis使用报错Read timed out排查解决
  • 基于Spring Boot的房屋租赁系统设计-开题报告(2)
  • 蓝易云 :Docker创建Consul并添加权限控制
  • 基于SpringBoot的毕业设计选题管理系统设计与实现 开题报告
  • 基于Spring Boot的商城系统的设计与实现 开题报告
  • [特殊字符] 思源笔记 S3 插件 v1.0.2 更新:手把手教你配置 PicList 导出
  • 欧姆龙 CP1E 与四台 E700 变频器通讯那些事儿
  • 基于单片机与12864显示屏的多种函数波形信号发生器设计
  • 基于Spring Boot框架的智慧物业后台管理系统的设计与实现-开题报告
  • 上班必备摸鱼神器——摸了吗
  • 【阵列优化】遗传算法稀布阵列天线中的应用【含Matlab源码 15034期】
  • 基于PCA主成分分析的BP神经网络回归预测
  • 全协议嵌入式读卡器模块是一款工业级射频前端解决方案 其技术规格说明书:支持125KHz/13.56MHz双频段,兼容ISO14443A/B/C、ISO15693、iClass等全协议栈。
  • 带负载转矩前馈补偿的永磁同步电机无感FOC:探索与实践
  • 【天线】随机虚拟天线阵列黎曼几何的MVDR波束成形仿真整合随机VAA、HPD矩阵黎曼几何和MVDR波束成形技术【含Matlab源码 15031期】
  • 多编组列车仿真:基于Fluent与Simpack的奇妙联动
  • 导师推荐10个降AIGC网站,千笔帮你轻松降AI率
  • 【信息融合】卡尔曼滤波多车辆GNSS UWB融合定位【含Matlab源码 15033期】
  • 基于MATLAB/Simulink的光伏逆变器仿真模型搭建与探索
  • 【计算机毕设】基于Python的Django-html基于混沌系统敏感文本信息加密算法研究
  • 对比一圈后!碾压级的AI论文网站 —— 千笔·专业论文写作工具
  • 【Linux】应用层自定义协议与序列化
  • 聚焦2026!城南核心地段现房交付成婚房热门之选,南都新城/实景现房/新房/现房/学区房/新楼盘/婚房,婚房实力厂家推荐
  • 实时数据库在智能交通与车路协同中的应用
  • 鸿蒙HarmonyOS 6应用开发:从零基础到App上线
  • 2026年市面上靠谱的环链气动葫芦直销厂家怎么选,牧田气动葫芦/气动葫芦/固定式气动葫芦,环链气动葫芦制造厂家哪家靠谱