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

【双端队列bfs】

【双端队列bfs】

笔记而已
推荐好文
推荐视频
双端队列bfs是解决0-1bfs最常用的一种手段
0-1bfs就是边值只有0或1两种情况时用的bfs
一般是求起点到终点所用边值总值最小为多少
用例题更好说明
1.拖拉机

这里,在通过没有干草块的位置时所用边值为零
通过有干草块位置时边值为1
要求需要移除最少的数量
那么一定是能不移就不移最好,实在需要移再移
换句话说,就是优先走没有干草块的位置,当走完没有干草块的位置时再走有干草块的位置

此时可以用双端队列deque来实现
将没有干草块的压入队头,有干草块的压入队尾
每次只用队头元素,就能实现先走边值为0,再走边值为1

不同于朴素bfs
0-1bfs不需要判重数组,一个点可能多次经过
但是,只有在值更小时才需要更新

代码

#include<bits/stdc++.h>//#define int long longusingnamespacestd;boolg[1015][1015];intdx[]={1,-1,0,0};intdy[]={0,0,1,-1};intdis[1015][1015];structnode{intx,y;};deque<node>dq;intn,x,y;voidbfs(intx,inty){dq.push_front((node){x,y});while(dq.size()){intax=dq.front().x,ay=dq.front().y;dq.pop_front();for(inti=0;i<4;i++){intsx=ax+dx[i],sy=ay+dy[i];if(sx>=0&&sx<=1010&&sy>=0&&sy<=1010){if(dis[sx][sy]<=dis[ax][ay]+g[sx][sy])continue;//只有值更小时,才需要更新if(!g[sx][sy])dq.push_front((node){sx,sy}),dis[sx][sy]=dis[ax][ay];if(g[sx][sy])dq.push_back((node){sx,sy}),dis[sx][sy]=dis[ax][ay]+1;if(!sx&&!sy)return;}}}}voidsolve(){cin>>n>>x>>y;while(n--){inta,b;cin>>a>>b;g[a][b]=1;}memset(dis,1e6,sizeof(dis));dis[x][y]=0;bfs(x,y);cout<<dis[0][0]<<endl;}signedmain(){intt=1;//cin>>t;while(t--){solve();}return0;}
http://www.jsqmd.com/news/319112/

相关文章:

  • 算法入门打卡Day2___滑动窗口法、螺旋矩阵、前缀和(区间和问题,开发商购买土地问题)、数组与容器的区别
  • 【Vue知识点总结】Vue 路由中的 hidden: true:路由控制技巧
  • AI模型训练:数据获取与增强
  • 子网划分原理、等长子网划分方法、等长子网划分实验
  • curl使用
  • 芒格的“锚定效应“警示:避免固有思维陷阱
  • 如何使用 Markdown 和思维导图可视化你的想法
  • 2025年上海地下室渗水维修TOP5专业服务商深度评测
  • 系统思考:以客户为中心
  • 曾经火爆的捕鱼游戏:一套完整的概率操控、经济循环与用户留存设计方案
  • 防止3.3v数字电源干扰到模拟电源3.3v 需做隔离,这里怎么实现
  • 旅游小程序设计毕业论文+PPT(附源代码+演示视频)
  • 基于multisim的声音识别的蚊子雌雄判别专用电路设计
  • 一个后台管理所有 AI:手把手教你搭建属于自己的 AI 中转站(CLIProxyAPI版)
  • 程序员如何利用AI进行资源调度
  • YOLO26涨点改进 | 全网独家创新/Conv篇 | AAAI 2025 | PConv新型风车形卷积和SPConv二次创新改进(移动风车卷积,使它充分活跃起来),增强特征提取,扩大感受野
  • 基于multisim的10min数字秒表设计
  • 从数据孤岛到系统承载:星际荣耀航天研发中的单一数据源工程实践
  • Nginx基础
  • 【LeetCode刷题】二叉树的中序遍历
  • nacos作为dubbo服务注册中心
  • @function 和 @description 的区别是什么
  • Neo4j的安装与配置
  • Windows下快速安装Python GDAL指南
  • 【26美赛D题】2026美赛数学建模(MCM/ICM)思路解析及代码分享
  • 永磁同步电机(PMSM)的PI控制
  • Python3 operator模块完全指南
  • linux内核伙伴系统分配物理页面时水位判断zone_watermark_ok
  • ubuntu通过windows主机访问网络
  • 基于微信小程序的社区养老服务平台【源码+文档+调试】