干了一整天的活,农夫约翰完全忘记了他把拖拉机落在田地中央了。

他的奶牛非常调皮,决定对约翰来场恶作剧。

她们在田地的不同地方放了 NNN 捆干草,这样一来,约翰想要开走拖拉机就必须先移除一些干草捆。

拖拉机的位置以及 NNN 捆干草的位置都是二维平面上的整数坐标点。

拖拉机的初始位置上没有干草捆。

当约翰驾驶拖拉机时,他只能沿平行于坐标轴的方向(北,南,东和西)移动拖拉机,并且拖拉机必须每次移动整数距离。

例如,驾驶拖拉机先向北移动 2 单位长度,然后向东移动 3 单位长度。

拖拉机无法移动到干草捆占据的位置。

请帮助约翰确定他需要移除的干草捆的最小数量,以便他能够将拖拉机开到二维平面的原点。

输入格式
第一行包含三个整数:NNN 以及拖拉机的初始位置 (x,y)(x,y)(x,y)。

接下来 NNN 行,每行包含一个干草捆的位置坐标 (x,y)(x,y)(x,y)。

输出格式
输出约翰需要移除的干草捆的最小数量。

数据范围
1≤N≤50000,1≤x,y≤10001≤N≤50000, 1≤x,y≤10001≤N≤50000,1≤x,y≤1000
输入样例:

7 6 3
6 2
5 2
4 3
2 1
7 3
5 4
6 4

输出样例:

1

双端队列 + 广搜

  1. 将有草堆的点权设为 111,没有草堆的点权设为 222
  2. 注意此题搜索时可以出 111 ~ 100010001000 的范围,所以设置为 000 ~ 100110011001 即可
#include<iostream>
#include<cstring>
#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;  // 0,0for(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){int 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;
}

拖拉机(寒假每日一题 4)相关推荐

  1. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.11日(2017省赛A第9题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家看博客目录:https://b ...

  2. 【寒假每日一题】剪绳子(个人练习)详细题解+推导证明(第六天)

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 今天终于出核酸检测的结果,还好大家都没事,不然怕是要封城了!!! 今天还是寒假 ...

  3. 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...

  4. AcWing寒假每日一题2058. 笨拙的手指

    AcWing寒假每日一题2058. 笨拙的手指 题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果 ...

  5. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.20日(2018省赛A组第8题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  6. 【寒假每日一题】数字三角形(个人练习)详细题解+推导证明(第二天)

    文章目录 前言 题目 详细题解 写法1 O ( n 2 ) O(n^2) O(n2) 推导证明 写法2 O ( n 2 ) O(n^2) O(n2) 推导证明 举一反三 总结 前言 昨天真是人生中奇葩 ...

  7. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  8. 倪文迪陪你学蓝桥杯2021寒假每日一题:2.1日(2019省赛A组第10题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

  9. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.15日(2018省赛A组第3题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  10. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

最新文章

  1. OSI模型第四层传输层--TCP协议
  2. linux yum list包数量少,Linux基础知识之YUM包管理工具
  3. 初始html(常用标签)
  4. Eigen求解数学问题(一)
  5. c# 操作excle
  6. 利用FPGA加速实现高性能计算
  7. Lattice、ALTERA、Xilinx FPGA元件封装信息官网下载地址
  8. 智慧机场大数据可视化分析决策系统
  9. 单片机|CC2530实验入门
  10. 哈工大教授车万翔「自然语言处理中的伪数据」
  11. Cookie 的 SameSite 属性
  12. 《谈美》读书感想:读书于人生的意义
  13. 经济学常识之破窗谬论
  14. 电子邮件服务的配置和使用
  15. JRebel安装、使用
  16. 面试官:说一下Redis和MongoDB的区别?
  17.  Meltdown论文翻译【转】
  18. 可解释推荐系统研究综述
  19. ORA-12899: value too large for column SOAU.SJQY_QTSBSPEC.PROPERTY_6 (actual: 566, maximum: 500
  20. 搜索引擎技术原理及其应用

热门文章

  1. 让老板满意的工作是:汇报工作说结果、请示工作说方案、总结工作说流程、布置工作说标准
  2. IOS程序员(新人入职一周)
  3. h5物体拖动_研究了50+个爆款H5,原来他们刷屏的套路如此简单
  4. 苹果7p最佳系统版本_苹果代码中发现, iPhone12 刘海没了!
  5. [原][连载]那时花开(三)
  6. 如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV
  7. Unity InputField唤出输入法
  8. vue Elementui 引入第三方icon(阿里矢量库)
  9. 用tensorboard可视化log日志
  10. 支付宝小程序模板行业合集,支付宝小程序制作平台分享