双头BFS
牛客月赛100 D题,过了80%数据,调了一下午。。。烦死了。。。
还是没调试出来,别人的代码用5维的距离的更新有滞后性,要在遍历之前要去重。。。
#include<bits/stdc++.h>
using namespace std;
const int N=2e3+10;
char g[N][N];
int dis[N][N],d1[N][N];
int n,m,sx,sy;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
typedef pair<int,int>PII;
queue<PII>q;
int bfs()
{while(q.size()){auto [x,y]=q.front();q.pop();for(int i=0;i<4;i++){int a=x+dx[i],b=y+dy[i];if(a<1||a>n||b<1||b>m)continue;if(dis[a][b]!=-1)continue;dis[a][b]=dis[x][y]+1;q.push({a,b});}}int ans=0x3f3f3f3f;memset(d1,-1,sizeof d1);queue<array<int,4>>p;p.push({sx,sy,sx,sy});d1[sx][sy]=0;while(p.size()){auto[x1,y1,x2,y2]=p.front();p.pop();for(int i=0;i<4;i++){int a=x1+dx[i],b=y1+dy[i];int c=x2-dx[i],d=y2-dy[i];if(a<1||a>n||b<1||b>m||c<1||c>n||d<1||d>m)continue;if(g[a][b]=='#'||g[c][d]=='#')continue;if(d1[a][b]!=-1)continue;d1[a][b]=d1[x1][y1]+1;if(g[a][b]=='@')ans=min(ans,d1[a][b]+dis[c][d]);p.push({a,b,c,d});}}if(ans!=0x3f3f3f3f)return ans;return -1;
}
int main()
{memset(dis,-1,sizeof dis);cin>>n>>m>>sx>>sy;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>g[i][j];if(g[i][j]=='@'){q.push({i,j});dis[i][j]=0;}}}cout<<bfs()<<endl;
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++){
// cout<<dis[i][j];
// }
// puts("");
// }
// puts("");
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++){
// cout<<d1[i][j];
// }
// puts("");
// } return 0;
}
相关文章:
双头BFS
牛客月赛100 D题,过了80%数据,调了一下午。。。烦死了。。。 还是没调试出来,别人的代码用5维的距离的更新有滞后性,要在遍历之前要去重。。。 #include<bits/stdc.h> using namespace std; const int N2e310; char g[N][…...
使用Spring Boot拦截器实现时间戳校验以防止接口被恶意刷
使用Spring Boot拦截器实现时间戳校验以防止接口被恶意刷 在开发Web应用程序时,接口被恶意刷请求(例如DDoS攻击或暴力破解)是一个常见的安全问题。为了提高接口的安全性,我们可以在服务端实现时间戳校验,以确保请求的…...
第10讲 后端2
主要目标:理解滑动窗口法、位姿图优化、带IMU紧耦合的优化、掌握g2o位姿图。 第9讲介绍了以为BA为主的图优化。BA能精确优化每个相机位姿与特征点位置。不过在更大的场景中,大量特征点的存在会严重降低计算效率,导致计算量越来越大࿰…...
统计学习方法与实战——统计学习方法概论
统计学习方法概论 文章目录 统计学习方法概论前言章节目录导读 实现统计学习方法的步骤统计学习方法三要素模型模型是什么? 策略损失函数与风险函数常用损失函数ERM与SRM 算法 模型评估与模型选择过拟合与模型选择 正则化与交叉验证泛化能力生成模型与判别模型生成方法判别方法…...
人体红外传感器简介
人体红外传感器的工作原理是利用热释电效应,将人体发出的特定波长的红外线转化为电信号,从而实现对人体的检测和感知。 具体来说,人体红外传感器主要由滤光片、热释电探测元和前置放大器组成。滤光片的作用是使特定波长的红外辐…...
【JAVA入门】Day35 - 方法引用
【JAVA入门】Day35 - 方法引用 文章目录 【JAVA入门】Day35 - 方法引用一、方法引用的分类1.引用静态方法2.引用成员方法2.1 引用其他类的成员方法2.2 引用本类和父类的成员方法2.3 引用构造方法2.4 使用类名引用成员方法2.5 引用数组的构造方法 二、方法引用的例题 方法引用就…...
集合及映射
1、集合类图 1)ArrayList与LinkedList 区别 LinkedList 实现了双向队列的接口,对于数据的插入速度较快,只需要修改前后的指向即可;ArrayList对于特定位置插入数据,需要移动特定位置后面的数据,有额外开销 …...
软考基础知识之计算机网络
目录 前言 网络架构与协议 网络互联模型 1、OSI/RM 各层的功能 2、TCP/IP 结构模型 常见的网络协议 1、应用层协议 2、传输层协议 3、网络层协议 IPv6 前言 从古代的驿站、 八百里快马, 到近代的电报、 电话, 人类对于通信的追求从未间断&…...
云手机怎样简化海外社媒平台运营
随着越来越多的卖家希望拓展海外市场,运营TikTok、Facebook等社交媒体平台已经成为吸引流量和促进销售的重要手段。然而,在管理海外社媒账号的过程中,许多人会面临网络连接的问题。这时,使用一款高效便捷的云手机工具就显得尤为便…...
创业者必读!选择拍卖源码还是自建开发,哪种方案更安全?
在当今数字化时代,拍卖平台作为一种独特的电子商务模式,正逐渐成为人们关注的焦点。随着互联网技术的发展,网络安全问题变得越来越突出。如何保障用户数据安全,防止信息泄露及攻击事件的发生,已经成为拍卖软件开发者面…...
Spring Cloud Gateway整合基于STOMP协议的WebSocket实战及遇到问题解决
本实例介绍了Spring Cloud Gateway整合基于STOMP协议的WebSocket的实现。开发了聊天功能,和用户在线状态。解决了协议gateway整合websocket出现的问题 技术点 Spring Cloud GatewayNacosWebSocketSTOMPWebSocket与STOMP协议详解 1. WebSocket WebSocket 是一种通信协议,提…...
软考高级:系统架构设计师——软件架构设计 Chapter 笔记
软考高级:系统架构设计师——软件架构设计 1 软件架构设计—基本概念架构所处的位置架构发展历程架构的“41”视图例题 架构描述语言(ADL)例题 2软件架构设计—架构风格数据流风格调用/返回 风格独立构件风格虚拟机风格仓库风格(以…...
PageHelper组件 实现前端分页查询功能
Hi~!这里是一颗小谷粒,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~💥💥个人主页:一颗小谷粒💥💥所属专栏:Web前端开发 💥💥博主…...
线性回归与逻辑回归在模型参数优化上的比较
概述 线性回归和逻辑回归是两种基础且广泛应用的预测模型。尽管它们在很多方面有相似之处,如都使用梯度下降算法来优化模型参数,但在优化目标和方法上存在一些关键差异。本文将探讨这两种模型在参数优化上的差异,并提供相应的代码示例。 线…...
JavaWeb JavaScript 10.日程管理 第一期
自我消耗,敏感是我, 明媚是我, 我横跳在不同的情绪中 —— 24.8.31 一、登录页及校验 1.校验账号格式 // 校验账号格式function checkUsername(){// 定义正则表达式表示字符串规则var usernameReg /^[a-zA-Z0-9]{5,10}$/;// 获取用户名输入…...
redis为什么快
春内存访问,相比数据库访问磁盘要快单线程,避免上下文切换带来的cpu开销渐进式Rehash。减少阻塞网络模型多路复用,reactor模型 常用基本数据类型 5个基本数据类型2个高级数据结构(bitmaps、hyperlog) redis高级功能…...
十分钟学会Kubernetes(K8S) 部署SpringBoot3.0
1、十分钟学会Kubernetes(K8S) 部署SpringBoot3.0 本课程以 Java 后端开发的视角,带着大家从零基础入门 k8s 实战,掌握企业级容器化管理平台的各种实战应用,以及 Prometheus 监控告警、ELK 日志收集、DevOps 等众多实战课程内容,大…...
顺序表的插入与删除
一.插入:插入前先移动后面的元素 1.图解: 在b和d之间插入c,此时就需要把d,e,f都向后移一位,腾出一个位置后插入c。 2.代码实现: #include<stdio.h> #define MaxSize 10 //定义最大长度…...
FFMPEG -- 音频开发
1:前言 在进行音频开发之前需要先知道一些基础知识,一些有必要的指导的概念。 1.1 声音的产生、获取和转换 声音的产生的本质是靠震动,声音的传播需要借助媒介,比如空气、液体、固体等媒介。在自然界中声音的可视化为音波的形式&…...
lxml官方入门教程(The lxml.etree Tutorial)翻译
lxml官方入门教程(The lxml.etree Tutorial)翻译 说明: 首次发表日期:2024-09-05官方教程链接: https://lxml.de/tutorial.html使用KIMI和豆包机翻水平有限,如有错误请不吝指出 这是一个关于使用lxml.et…...
OpenClaw安全实践:gemma-3-12b-it本地化保障敏感数据边界
OpenClaw安全实践:gemma-3-12b-it本地化保障敏感数据边界 1. 为什么需要本地化部署? 去年处理季度财报时,我犯过一个至今心有余悸的错误。当时用某公有云API自动分析Excel中的财务数据,结果在调试时不小心把包含客户银行账号的测…...
Nunchaku FLUX.1-dev部署教程:Linux系统下CUDA驱动与PyTorch匹配指南
Nunchaku FLUX.1-dev部署教程:Linux系统下CUDA驱动与PyTorch匹配指南 想用最新的Nunchaku FLUX.1-dev模型生成惊艳的AI图片,结果卡在了环境配置上?别担心,这篇教程就是为你准备的。很多朋友在部署时遇到的最大障碍,往…...
Go HTTP 客户端连接池管理
Go HTTP 客户端连接池管理:提升性能的关键实践 在现代Web开发中,高效的HTTP客户端是微服务通信和API调用的核心组件。Go语言凭借其简洁的并发模型和原生HTTP库,成为构建高性能服务的首选。默认的HTTP客户端若不加以优化,频繁创建…...
**雾计算中的边缘智能:基于Python的轻量级任务调度系统设计与实现**在物联网(IoT)飞速发展
雾计算中的边缘智能:基于Python的轻量级任务调度系统设计与实现 在物联网(IoT)飞速发展的今天,传统云计算模式已难以满足低延迟、高带宽和实时响应的需求。**雾计算(Fog Computing)**作为云与终端设备之间的…...
OpenClaw多模态技能扩展:用Qwen3.5-9B实现截图OCR自动归档
OpenClaw多模态技能扩展:用Qwen3.5-9B实现截图OCR自动归档 1. 为什么需要智能截图归档 作为一个长期依赖截图保存信息的用户,我的桌面常年堆积着数百张未命名的截图文件。传统的解决方案无非两种:手动重命名(耗时费力࿰…...
StreamLib嵌入式流处理库:高效HTTP通信与缓冲优化
1. StreamLib 嵌入式流处理库深度解析:面向资源受限系统的高效网络与HTTP通信设计在嵌入式系统开发中,尤其是基于Arduino生态的MCU平台(如ESP32、ESP8266、STM32 Arduino Core),网络通信性能瓶颈往往并非来自物理层带宽…...
基于单片机的温控风扇(有完整资料)
资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T4272204C设计简介:本设计是基于单片机的语音控制温控风扇,主要实现以下功能:1、可通过LCD1602显示温度和档位ÿ…...
三菱FX5U ModbusTCP从站配置避坑指南:从IP冲突到通讯成功的完整流程
三菱FX5U ModbusTCP从站配置避坑指南:从IP冲突到通讯成功的完整流程 工业自动化领域中,ModbusTCP通讯协议因其简单高效的特点,成为PLC与上位机交互的常用方式。三菱FX5U系列PLC作为一款高性价比的可编程控制器,在中小型自动化项目…...
告别复制粘贴:用影刀RPA+飞书多维表格,我把每周的销售数据汇总从2小时缩到5分钟
告别复制粘贴:用影刀RPA飞书多维表格实现销售数据自动化革命 每周五下午,市场部的张经理总要面对同样的噩梦:从七个不同渠道导出销售数据,手动核对格式差异,复制粘贴到汇总表,再计算各类指标。这个重复劳动…...
LLM性能评估入门到精通,搞懂推理指标看这篇就够了!
TTFT、TPOT、ITL、Goodput… 这些指标到底什么意思?今天用一篇文章彻底讲清楚 LLM 推理的性能评估体系。 一、为什么指标很重要 生产环境的真实场景 你部署了一个大模型服务,用户反馈: “首字响应好慢” → 什么问题?“生成过程…...
