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

双端队列的0-1BFS

问题:
B. Labyrinth
代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define fi first
#define se second
#define vi vector<int>
#define vll vector<long long>
#define pii pair<int,int>
#define endl '\n'
#define MOD 1000000007
const int N=2e5+5,INF=1e18;void solve(){int n,m,r,c,x,y;cin>>n>>m>>r>>c>>x>>y;vector<string>g(n);for(int i=0;i<n;i++) cin>>g[i];int sr=r-1,sc=c-1;vector<vi>dist(n,vi(m,INF));deque<pii>dq;dist[sr][sc]=0;dq.emplace_front(sr,sc);int dr[4]={-1,1,0,0};//左右上下int dc[4]={0,0,1,-1};while(!dq.empty()){auto [i,j]=dq.front();dq.pop_front();int cur=dist[i][j];for(int k=0;k<4;k++){int ni=i+dr[k],nj=j+dc[k];if(ni<0||ni>=n||nj<0||nj>=m) continue;if(g[ni][nj]=='*') continue;int add=(k==3)?1:0;if(cur+add<dist[ni][nj]){dist[ni][nj]=cur+add;if(add==0) dq.emplace_front(ni,nj);else dq.emplace_back(ni,nj);}}}int ans=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(dist[i][j]==INF) continue;int L=dist[i][j];int cd=j-sc;int R=L+cd;if(L<=x&&R>=0&&R<=y) ans++;}}cout<<ans<<endl;
}signed main(){ios::sync_with_stdio(false);cin.tie(0);int T=1;
//	cin>>T;while(T--)solve();return 0;
}
http://www.hskmm.com/?act=detail&tid=29402

相关文章:

  • Python psycopg2 类库使用学习总结
  • [GenAI] RAG架构演进
  • 24NOIP游记——彼时彼刻
  • 嵌入式-C++面经1
  • 合并区间 - MKT
  • 如何防止员工向第三方 AI 泄露数据?滤海 AI DLP 全方位技术防护方案解析
  • 20232322 2025-2026-1 《网络与系统攻防技术》实验一实验报告
  • 实验1 现代c++编程初体验
  • 冬天快乐
  • P2441M 见过的 tricks
  • 企业大数据战略定位
  • OpenAI加码个性化消费AI技术布局
  • 线性回归 C++ 实现
  • 内存分区
  • Spring Data JPA学习笔记
  • P1112 波浪数 题解
  • 20232411 2025-2026-1 《网络与系统攻防技术》实验一实验报告
  • 使用 Pascal 实现英文数字验证码识别系统
  • PWN手的成长之路-15-jarvisoj_level2_x64
  • 2025.10.12——1绿
  • 价值博弈场的工程实现:构建数字文明的价值免疫系统——声明Ai生成
  • 基于 Rust 的英文数字验证码识别系统设计与实现
  • 2025年两联供室内机厂家最新权威推荐榜:技术实力与市场口碑
  • 2025武汉商铺装修防水厂家最新权威推荐榜:专业施工与品质保
  • 2025铝合金微弧氧化厂家权威推荐榜:表面处理技术实力深度解
  • 2025杉木木方厂家最新权威推荐榜:优质木材与稳定供应口碑之
  • 2025年厂房保养厂家最新权威推荐榜:专业维护与成本控制优选
  • 使用C语言实现重写stm32的启动文件
  • 2025中医师承权威推荐榜:名师带徒与临床实践深度解析
  • 让我们开始 CSS 的学习之旅