原题链接:https://www.acwing.com/problem/content/2021/

一个裸的双端队列广搜.

#include <iostream>
#include <cstring>
#include <algorithm>
#include <deque>#define x first
#define y secondusing namespace std;typedef pair<int, int> PII;
const int N = 1010;bool g[N][N], st[N][N];
int dist[N][N];int bfs(int sx, int sy)
{deque<PII> q;q.push_back({sx, sy});memset(dist, 0x3f, sizeof dist);dist[sx][sy] = 0;int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};while (q.size()){auto t = q.front();q.pop_front();// 出队的时候, 判断,这是优化if (st[t.x][t.y]) continue;st[t.x][t.y] = true;// 到了 直接退出if (!t.x && !t.y) break;for (int i = 0; i < 4; i ++ ){int x = t.x + dx[i], y = t.y + dy[i];if (x >= 0 && x < N && y >= 0 && y < N){// 是甘草堆的话,w才为1int w = 0;if (g[x][y]) w = 1;if (dist[x][y] > dist[t.x][t.y] + w){dist[x][y] = dist[t.x][t.y] + w;if (!w) q.push_front({x, y});else q.push_back({x, y});}}}}// 开到原点return dist[0][0];
}int main()
{int n, sx, sy;scanf("%d%d%d", &n, &sx, &sy);while (n -- ){int x, y;scanf("%d%d", &x, &y);g[x][y] = true;}printf("%d\n", bfs(sx, sy));return 0;
}

双端队列BFS:拖拉机相关推荐

  1. AcWing 2019. 拖拉机(双端队列BFS)

    [题目描述] 干了一整天的活,农夫约翰完全忘记了他把拖拉机落在田地中央了. 他的奶牛非常调皮,决定对约翰来场恶作剧. 她们在田地的不同地方放了NNN捆干草,这样一来,约翰想要开走拖拉机就必须先移除一些 ...

  2. 广度优先搜索BFS进阶(一):多源BFS、优先队列BFS、双端队列BFS

    一.多源BFS 在上一篇博客:广度优先搜索BFS基础中,我们接触到的BFS均是单起点(单源)的,但是对于某一些问题,其有多个起点,此类问题我们称为多源BFS问题.先思考下面一道例题: 1.腐烂的橘子 ...

  3. 洛谷P1346 电车(双端队列BFS)

    [题目描述] 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关 ...

  4. 双端队列 BFS + Chamber of Secrets CodeForces - 173B

    题意: 一个 n×mn\times mn×m 的图,现在有一束激光从左上角往右边射出,每遇到 '#',你可以选择光线往四个方向射出,或者什么都不做,问最少需要多少个 '#' 往四个方向射出才能使光线在 ...

  5. 电路维修 -> 双端队列 BFS

    [问题描述] Elf是来自Gliese星球的少女,她有一辆飞行车.飞行车电路板的整体结构是一个R行C列的网格(R,C≤500),网格的交点都是电路板的接点,每个格子都包含一个电子元件.电子元件的主要部 ...

  6. 【双端队列广搜/搜索+图论】AcWing 2019.拖拉机 USACO 2012 March Contest Silver Division

    [题目描述] 干了一整天的活,农夫约翰完全忘记了他把拖拉机落在田地中央了. 他的奶牛非常调皮,决定对约翰来场恶作剧. 她们在田地的不同地方放了 NNN 捆干草,这样一来,约翰想要开走拖拉机就必须先移除 ...

  7. 2019 拖拉机(双端队列广搜)

    1. 问题描述: 干了一整天的活,农夫约翰完全忘记了他把拖拉机落在田地中央了.他的奶牛非常调皮,决定对约翰来场恶作剧.她们在田地的不同地方放了 N 捆干草,这样一来,约翰想要开走拖拉机就必须先移除一些 ...

  8. 【搜索专题】BFS中的多源BFS-双端队列BFS

    A.AcWing 173. 矩阵距离(多源BFS) 所有点到多个终点的最短距离 我们可以建一个虚拟源点,虚拟源点到所有终点连0权的边,跑一次单源最短路即可 答案就是每一个点到虚拟源点的最近距离 先将d ...

  9. Python 数据结构与算法 —— list与deque(双端队列)

    TimeComplexity - Python Wiki 1. 底层数据结构 list 的底层是数组(array),其最大的时间空间消耗出现在存储元素增长超过当前数组分配的大小时,所有元素都必须移动到 ...

最新文章

  1. 过程控制系统模拟信号标准
  2. 用variance和bias解释其overfitting
  3. bootstrap-动画过渡
  4. wxWidgets:wxSysColourChangedEvent类用法
  5. 自动化测试框架cucumber_自动化测试框架cucumber-java操作手册_从配置到生成测报...
  6. AndroidX 方法数限制 Error:Cannot fit requested classes in a single dex file 64K问题
  7. 树莓派蓝屏_树莓派刷写Windows 10 ARM版后成功运行桌面程序
  8. CSS多列布局(实例)
  9. 《软件项目管理(第二版)》第 3 章——项目计划 重点部分总结
  10. 【JVM调优系列】----CPU过高的分析与解决方案
  11. Hadoop编译打包记录
  12. Oracle-第一篇一些调优技巧
  13. 苹果CMSv10首涂第四套自适应视频站正版原创挖片网高级DIY模板
  14. 腾讯信鸽推送(一):服务端架构
  15. u盘扩容盘用什么软件测试,如何检测所购买的U盘是否为扩容盘?
  16. 隐马尔可夫模型(HMM)
  17. 草稿cfmm~yuyu 22.9.26 Linux
  18. 兔子繁殖问题python编程_C语言编程:兔子繁殖问题
  19. navicat 1062报错
  20. css3 火焰文字,Css3字体做出火焰效果的实现步骤

热门文章

  1. Scratch3.0----函数(1)
  2. 修改Avaya IP-Office电话交换机出厂自带的提示语音内容
  3. 为什么循环队列要浪费一个存储空间
  4. adb shell input(系统服务:input)
  5. pix2pixHD:High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
  6. AI世界依旧在“风起云涌”中变化
  7. 弘辽科技:拼多多高客单价怎么改低价格提升?
  8. 上了年纪的酒店,如何“鸟枪换炮”?
  9. 秦储一行拜访陕西省文联和陕西新华出版传媒集团
  10. Kettle/Pentaho的Carte集群配置和使用