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

迷宫与陷阱--bfs+回路+剪枝

1.用bfs板子,同时会出现回路,但不能不用bo数组,要减去一部分没有用的回路

2.什么叫没有用的回路--因为我有无敌了,以前遇到的陷阱就能过了,那这就是有用的回路,

所以我记录(x,y)点的无敌状态步数(初始化为0),如果回来的步数大于之前的,那么很·有用,因为可能会过一些陷阱,如果小于等于那就纯纯浪费时间

P8673 [蓝桥杯 2018 国 C] 迷宫与陷阱 - 洛谷

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair<int,int> pii;
int n,k;
char a[1005][1005];
int bo[1005][1005];
int kk[1005][1005];
int an=0x3f3f3f3f;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
struct no
{int x,y,w;
};
queue<no> q;
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>k;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++) cin>>a[i][j];}bo[1][1]=1;q.push({1,1,0});while(q.size()){no t=q.front();q.pop();int x=t.x,y=t.y;if(x==n&&y==n){cout<<bo[x][y]-1;return 0;}if(bo[x][y]>=n*n-1){cout<<-1;return 0;}for(int i=0;i<4;i++){int tx=x+dx[i],ty=y+dy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=n){if(!bo[tx][ty]){if(a[tx][ty]=='.'){bo[tx][ty]=bo[x][y]+1;q.push({tx,ty,max(t.w-1,0)});}if(a[tx][ty]=='%'){bo[tx][ty]=bo[x][y]+1;kk[tx][ty]=k;q.push({tx,ty,k});a[tx][ty]='.';}if(a[tx][ty]=='X'&&t.w>0){bo[tx][ty]=bo[x][y]+1;kk[tx][ty]=t.w-1;q.push({tx,ty,t.w-1});}	}else///最关键的一步,采用有用的回路 {if(a[tx][ty]=='%'&&k>kk[tx][ty]){bo[tx][ty]=bo[x][y]+1;kk[tx][ty]=k;q.push({tx,ty,k});a[tx][ty]='.';}if(a[tx][ty]=='X'&&t.w>0&&t.w-1>kk[tx][ty]){bo[tx][ty]=bo[x][y]+1;kk[tx][ty]=t.w-1;q.push({tx,ty,t.w-1});}if(a[tx][ty]=='.'&&max(t.w-1,0)>kk[tx][ty]){bo[tx][ty]=bo[x][y]+1;q.push({tx,ty,max(t.w-1,0)});}}}}}cout<<-1;return 0;
}

 

 

相关文章:

迷宫与陷阱--bfs+回路+剪枝

1.用bfs板子&#xff0c;同时会出现回路&#xff0c;但不能不用bo数组&#xff0c;要减去一部分没有用的回路 2.什么叫没有用的回路--因为我有无敌了&#xff0c;以前遇到的陷阱就能过了&#xff0c;那这就是有用的回路&#xff0c; 所以我记录&#xff08;x,y&#xff09;点…...

【国产化适配】如何选择高效合规的安全数据交换系统?

一、安全数据交换系统的核心价值与国产化需求 在数字化转型浪潮中&#xff0c;企业数据流动的频率与规模呈指数级增长&#xff0c;跨网文件传输已成为日常运营的刚需&#xff0c;所以安全数据交换系统也是企业必备的工具。然而&#xff0c;数据泄露事件频发、行业合规要求趋严…...

基于深度学习的裂缝检测与分割研究方向的 数据集介绍

目录 一、基于深度学习的裂缝检测与分割研究方向 1. 任务定义与挑战 2. 主流方法与技术演进 3. 实际应用优化 二、裂缝检测与分割常用数据集详解 1. SDNET2018 2. CrackTree&#xff08;CrackTree200&#xff09; 3. AigleRN 4. CFD&#xff08;Concrete Crack Detect…...

【Prompt实战】国际翻译小组

本文原创作者&#xff1a;姚瑞南 AI-agent 大模型运营专家/音乐人/野生穿搭model&#xff0c;先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗&#xff1b;多年人工智能行业智能产品运营及大模型落地经验&#xff0c;拥有AI外呼方向国家专利与PMP项目管理证书。&#…...

简化复杂系统的优雅之道:深入解析 Java 外观模式

一、外观模式的本质与核心价值 在软件开发的世界里&#xff0c;我们经常会遇到这样的场景&#xff1a;一个复杂的子系统由多个相互协作的类组成&#xff0c;这些类之间可能存在错综复杂的依赖关系和交互逻辑。当外部客户端需要使用这个子系统时&#xff0c;往往需要了解多个类…...

设计模式杂谈-模板设计模式

在进入正题之前&#xff0c;先引入这样一个场景&#xff1a; 程序员A现在接到这样一个需求&#xff1a;这个需求有10个接口&#xff0c;这些接口都需要接收前端的传参&#xff0c;以及给前端返回业务状态信息。出于数据保密的要求&#xff0c;不管是前端传参还是最终参数返回都…...

LangChain【8】之工具包深度解析:从基础使用到高级实践

文章目录 1. LangChain工具包概述1.1 工具包的基本概念1.2 工具包的主要类型 2. SQL数据库工具包深度解析2.1 基本配置与初始化2.2 数据库连接与验证2.3 工具包初始化与工具获取2.4 创建Agent并执行查询2.5 完整代码 3. 高级使用技巧3.1 自定义工具集成3.2 多工具包组合使用3.3…...

C#入门学习笔记 #6(字段、属性、索引器、常量)

欢迎进入这篇文章&#xff0c;文章内容为学习C#过程中做的笔记&#xff0c;可能有些内容的逻辑衔接不是很连贯&#xff0c;但还是决定分享出来&#xff0c;由衷的希望可以帮助到你。 笔记内容会持续更新~~ 将这四种成语放在一起讲是因为这四种成员都是用来表达数据的。 字段…...

广目软件GM DC Monitor

广目&#xff08;北京&#xff09;软件有限公司成立于2024年&#xff0c;技术和研发团队均来自于一家具有近10年监控系统研发的企业。广目的技术团队一共实施了9家政府单位、1家股份制银行、1家芯片制造企业的数据中心监控预警项目。这11家政企单位由2家正部级、1家副部级、6家…...

每日八股文6.6

每日八股-6.6 Mysql1.怎么查看一条sql语句是否走了索引&#xff1f;2.能说说 MySQL 事务都有哪些关键特性吗&#xff1f;3.MySQL 是如何保证事务的原子性的&#xff1f;4.MySQL 是如何保证事务的隔离性的&#xff1f;5.能简单介绍一下 MVCC 吗&#xff1f;或者说&#xff0c;你…...

动静态库的使用(Linux下)

1.库 通俗来说&#xff0c;库就是现有的&#xff0c;可复用的代码&#xff0c;例如&#xff1a;在C/C语言编译时&#xff0c;就需要依赖相关的C/C标准库。本质上来说库是一种可执行代码的二进制形式&#xff0c;可以被操作系统载入内存执行。通常我们可以在windows下看到一些后…...

PostgreSQL17 编译安装+相关问题解决

更新时间&#xff1a;2025.6.6&#xff0c;当前最新稳定版本17.5&#xff0c;演示的是17.5&#xff0c;最新测试版本18beta1 演示系统&#xff1a;debian12 很多时候&#xff0c;只有编译安装才能用上最新的软件版本或指定的版本。这也是编译安装的意义。 一、编译安装 &…...

FFMPEG 提取视频中指定起始时间及结束时间的视频,给出ffmpeg 命令

以下是提取视频中指定起始时间及结束时间的 ffmpeg 命令示例: bash 复制 ffmpeg -i input.mp4 -ss 00:01:30.00 -to 00:05:00.00 -c copy output.mp4 其中,-i input.mp4 是指定要处理的输入视频文件为 “input.mp4”。 -ss 00:01:30.00 表示指定视频的起始时间为 1 分 30 …...

React 第五十六节 Router 中useSubmit的使用详解及注意事项

前言 useSubmit 是 React Router v6.4 引入的强大钩子&#xff0c;用于以编程方式提交表单数据。 它提供了对表单提交过程的精细控制&#xff0c;特别适合需要自定义提交行为或非标准表单场景的应用。 一、useSubmit 核心用途 编程式表单提交&#xff1a;不依赖 <form>…...

华为云学堂-云原生开发者认证课程列表

华为云学堂-云原生认证 云原生开发者认证的前5个课程...

Vue.js 组件:深入理解与实践

Vue.js 组件:深入理解与实践 引言 随着前端技术的不断发展,Vue.js 作为一种流行的前端框架,因其简洁、易学、高效的特点受到越来越多开发者的青睐。在Vue.js中,组件是构建用户界面的基石。本文将深入探讨Vue.js组件的概念、特性、创建方式以及在实际开发中的应用,帮助读…...

什么是强化学习:设置奖励函数最为loss, 监督学习:标签准确率作为loss

什么是强化学习:设置奖励函数最为loss, 监督学习:标签准确率作为loss 什么是强化学习:在复杂环境中自主探索,适用于序列决策 最大优势: 通过试错探索发现最优策略,适应环境动态变化,擅长解决需要长期规划和序列决策的问题。典型案例: 游戏AI(如AlphaGo/AlphaZero):…...

理解网络协议

1.查看网络配置 : ipconfig 2. ip地址 : ipv4(4字节, 32bit), ipv6, 用来标识主机的网络地址 3.端口号(0~65535) : 用来标识主机上的某个进程, 1 ~ 1024 知名端口号, 如果是服务端的话需要提供一个特定的端口号, 客户端的话是随机分配一个端口号 4.协议 : 简单来说就是接收数据…...

placeholder不显示and模板字符串无效

一、placeholder"请输入"不显示请输入&#xff1f; input框里写了placeholder为什么不显示呢&#xff1f; 检查代码&#xff0c;input是否有初始值 在 Vue.js 中&#xff0c;v-model 是双向绑定的语法糖&#xff0c;它会动态更新输入框的 value。如果绑定的数据有初…...

在MyBatis中设计SQL返回布尔值(Boolean)有几种常见方法

方案一&#xff1a;使用COUNT查询存在性&#xff08;推荐&#xff09; <select id"checkUserExists" resultType"_boolean">SELECT COUNT(*) > 0 FROM users WHERE username #{username} </select> ​​说明​​&#xff1a; MySQL中COU…...

全球知名具身智能/AI机器人实验室介绍之AI FACTORY基于慕尼黑工业大学

全球知名具身智能/AI机器人实验室介绍之AI FACTORY基于慕尼黑工业大学 TUM AI FACTORY&#xff0c;即KI.FABRIK&#xff0c;是德国慕尼黑工业大学&#xff08;TUM&#xff09;在巴伐利亚州推出的一个旗舰项目&#xff0c;旨在打造未来工厂&#xff0c;将传统工厂转变为由人工智…...

DASCTF

[DASCTF X 0psu3十一月挑战赛&#xff5c;越艰巨越狂热]EzPenetration Tip:数据库里的邮箱key已更改为管理员密码&#xff0c;拿到后可直接登录 打开靶机&#xff0c;用Wappalyzer分析网站&#xff0c;可以看到管理系统是Wordpress&#xff0c;因此可以尝试用WPSSCAN扫描公开…...

钉钉 - 机器人消息推送(签名版)

前言 在日常生活中&#xff0c;我们可能会遇到某些异常发生后需要紧急通知到群里&#xff0c;让相关人员看到紧急处理的事件触发机制。 消息群我采用的是钉钉推送&#xff0c;本文介绍了如何用php 推送钉钉机器人消息。 源码封装 <?php /*** 钉钉通知 - 签名版*/ class …...

Redux 实践与中间件应用

Redux 异步处理的挑战 Redux 核心设计是同步的、单向数据流&#xff0c;但现代应用中异步操作无处不在。Redux 中间件填补了这一缺口&#xff0c;专门解决异步流程管理、副作用隔离等复杂场景。 中间件架构原理 中间件位于 action 被发起之后、到达 reducer 之前&#xff0c…...

ModBus总线协议

一、知识点 1. 什么是Modbus协议&#xff1f; Modbus 是一种工业通信协议&#xff0c;最早由 Modicon 公司在1979年提出&#xff0c;目的是用于 PLC&#xff08;可编程逻辑控制器&#xff09;之间的数据通信。它是主从式通信&#xff0c;即一个主机&#xff08;主设备&#xf…...

【计算机网络】非阻塞IO——poll实现多路转接

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;计算机网络 &#x1f339;往期回顾&#x1f339;&#xff1a;【计算机网络】非阻塞IO——select实现多路转接 &#x1f516;流水不争&#xff0c;争的是滔滔不息 一、…...

在.NET Core控制器中获取AJAX传递的Body参数

.Net Core是支持前后端不分离式的开发的&#xff0c;如果在原始系统中采用不分离式开发&#xff0c;后面需要在原系统中增加功能&#xff0c;并且新的服务采用其他语言开发&#xff0c;且系统原来功能保持原样&#xff0c;这样前端系统可以单独调用新开发的接口。 但是&#x…...

snprintf函数用法及注意事项详解

当 format 后没有可变参数&#xff08;即 ... 为空&#xff09;时&#xff0c;va_start 的行为和后续操作如下&#xff1a; 1. va_start 的行为 va_start 的核心任务是根据最后一个固定参数&#xff08;format&#xff09;的地址&#xff0c;计算可变参数列表的起始位置。即使…...

vue-20(Vuex 状态管理的最佳实践)

Vuex 状态管理的最佳实践 Vuex 是管理大型 Vue.js 应用状态的一个强大工具&#xff0c;但其有效性取决于其组织和维护的质量。管理不善的 Vuex 存储可能会变得难以控制、难以调试&#xff0c;并成为性能瓶颈。本课程深入探讨构建 Vuex 存储的最佳实践&#xff0c;重点关注可维…...

DAX权威指南8:DAX引擎与存储优化

文章目录 十七、DAX引擎17.1 DAX 引擎的体系结构17.1.1 表格模型的双引擎架构17.1.2 存储引擎的三种模式17.1.2.1 VertiPaq引擎17.1.2.2 DirectQuery 引擎17.1.2.3 对比与最佳实践 17.1.3 数据刷新 17.2 理解 VertiPaq 存储引擎17.2.1 列式数据库17.2.2 VertiPaq 压缩17.2.2.1 …...