1. tractor
题目描述
农场上有N(1 <= N <= 50,000)堆草,放在不同的地点上。FJ有一辆拖拉机,也在农场上。拖拉机和草堆都表示为二维平面上的整数坐标,坐标值在1..1000的范围内。拖拉机的初始位置与所有草堆不同。
FJ开拖拉机时,只能平行于坐标轴(即东、南、西、北四个方向),而且每次开动的一段必须是整数长度。
例如,他可以向北开2个单位长度,然后向东开3个单位长度。拖拉机不能开到草堆的位置。
请帮助FJ计算出最少要移动多少个草堆,他才能将拖拉机开回坐标原点。
拖拉机可以开到1..1000之外的地方去。
输入
第1行: 3个整数,即N 和拖拉机的初始位置 (x,y)
第2..1+N行: 每行2个整数,表示一堆草的位置 (x,y)
输出
第1行: FJ必须移动的最少的草堆的数量
样例输入
7 6 3
6 2
5 2
4 3
2 1
7 3
5 4
6 4
样例输出
1
Time limit
1s
Memory limit
256M
提示
样例说明:拖拉机初始在(6,3),7堆草分别在 (6,2), (5,2), (4,3), (2,1), (7,3), (5,4), (6,4).
FJ必须移动一堆草
***********************************************************************

只要走到边界,则不花代价即可。用到BFS。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<queue>
 5 using namespace std;
 6 int n,startx,starty;
 7 int a[50005],b[50005];
 8 bool map[1005][1005];
 9 int dx[4]={1,-1,0,0};
10 int dy[4]={0,0,1,-1};
11 int dis[1005][1005];
12 int inq[1005][1005];
13 int q1[1005*1005*10];
14 int q2[1005*1005*10];
15 int head=0,tail=1;
16 inline void bfs(int x,int y)
17 {
18     inq[x][y]=true;
19     q1[1]=x;q2[1]=y;
20     while(head<tail)
21     {
22         head++;
23         int x1=q1[head],x2=q2[head];
24
25         inq[x1][x2]=false;
26         for(int i=0;i<=3;i++)
27         {
28             int u1=x1+dx[i],u2=x2+dy[i];
29             if(u1>1001||u1<0||u2>1001||u2<0) continue ;
30             if(map[x1][x2]==true)
31             {
32                 if(dis[u1][u2]>dis[x1][x2]+1)
33                 {
34                     dis[u1][u2]=dis[x1][x2]+1;
35                     if (inq[u1][u2]==false)
36                     {
37                         inq[u1][u2]=true;
38                         q1[++tail]=u1;q2[tail]=u2;
39                     }
40                 }
41             }
42             else
43             {
44                 if(dis[u1][u2]>dis[x1][x2])
45                 {
46                     dis[u1][u2]=dis[x1][x2];
47                     if (inq[u1][u2]==false)
48                     {
49                         inq[u1][u2]=true;
50                         q1[++tail]=u1;q2[tail]=u2;
51                     }
52                 }
53             }
54         }
55     }
56
57     return ;
58 }
59 int main()
60 {
61     freopen("tractor.in","r",stdin);
62     freopen("tractor.out","w",stdout);
63     scanf("%d%d%d",&n,&startx,&starty);
64     for(int i=1;i<=n;i++)
65     {
66         scanf("%d%d",&a[i],&b[i]);
67         map[a[i]][b[i]]=true;
68     }
69     memset(dis,127,sizeof(dis));
70     dis[startx][starty]=0;
71     bfs(startx,starty);
72     int ans=99999999;
73     for(int i=0;i<=1000;i++)
74     {
75         ans=min(ans,dis[i][0]);
76         ans=min(ans,dis[0][i]);
77         ans=min(ans,dis[i][1001]);
78         ans=min(ans,dis[1001][i]);
79     }
80     printf("%d",ans);
81     return 0;
82 }

转载于:https://www.cnblogs.com/937337156Zhang/p/6054684.html

NOIP模拟题——tractor相关推荐

  1. 闵梓轩大佬のnoip模拟题D1 总结 2017/10/26

    背景 题目概括 T1 题面 分析 90分算法 满分算法 T2 题面 分析 部分分算法 满分算法 满分代码 T3 题面 分析 代码 总结 背景 这道题目是去年的金牌大佬闵梓轩在一年前出的一套noip模拟 ...

  2. NOIp模拟题 之 肮脏的牧师 (桶排序)

    闲话: 考场上看到了这一题,简直令我震惊!啊!居然还有真么简单的模拟题!良心啊! 而且,还是我 痴迷的 熟悉的游戏 --  欧气传说 炉石传说! (话说题面的那三张卡都贼 恶心 好用!都可以在前期打出 ...

  3. 一些noip模拟题一句话题解

    Problem A: 序列 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 12  Solved: 9 [Submit][Status][Web Bo ...

  4. 【noip模拟题】天神下凡(贪心)

    vijos某次模拟赛原题... 处理出每个圆的一级祖先就行了... 其实没有那么麻烦,贪心即可出解. 我们将每个圆转换成线段后按左端点小右端点大的方法排序 然后维护一个栈: 对于每一个圆i 如果栈顶右 ...

  5. noip模拟题11.11 光棍节测试

    T1. tractor 题目描述 农场上有N(1 <= N <= 50,000)堆草,放在不同的地点上.FJ有一辆拖拉机,也在农场上.拖拉机和草堆都表示为二维平面上的整数坐标,坐标值在1. ...

  6. NOIP模拟题——来自风平浪静的明天

    [题目描述] 冬眠了五年,光终于从梦中醒来. 千咲.要,大家都在. 隐约记得"昨天"的海船祭,爱花意外成为贡女,沉入海底. 海面冰封,却有丝丝暖流在冰面之下涌动. 此时,爱花沉睡在 ...

  7. Noip模拟题解题报告

    Pro 第一次AK. 题目链接 Sol 站军姿 算是数学题吧,求出两圆的位置关系,然后余弦定理和扇形面积什么的搞搞就行. #include<iostream> #include<cs ...

  8. noip模拟题11.5

    T1 大天使之剑 [问题描述] 小A在游戏⾥打怪.有⼀次,他⼀下⼦遇到了n个怪物. 每个怪物有一个生命值,第i个怪物的生命值是h_i.而小A除了生命值之外,还有一个属性是魔法值m. 小A和怪物们依次行 ...

  9. [Noip模拟题]寿司

    Description 小 c 是一名 oier.最近,他发现他的数据结构好像学傻了.因为他在刷题时碰到了一道傻逼数据结构题,强行使用了平衡树来解决,卡着时间 AC.为此,他被狠狠地嘲讽了一番.于是, ...

  10. [HZWER NOIP模拟题][杂题][防骗题]数列

    简要题意: 长度为n的数列,有m个询问,每组询问a,b,c,表示要求出最小的i满足a*(i+1)*xi^2+(b+1)*i*xi+c+i=0,为保证强制在线,实际的a=a+lastans(b,c同理) ...

最新文章

  1. 小马源码_Java互联网架构-重新认识Java8-HashMap-不一样的源码解读
  2. 【NLP_Stanford课堂】语言模型1
  3. iOS关于rar解压第三方库Unrar4iOS使用总结
  4. java.math.BigDecimal cannot be cast to java.lang.Integer
  5. android java代码打印系统日志_Java快速开发平台源码
  6. 在mybatis里面设置不同数据库运行环境和适应性问题
  7. Request 对象
  8. 单片机led数码管显示c语言,各位大神,如何用C语言实现在数码管上实现1234同时亮...
  9. 电商项目---完成内容管理cms系统
  10. Python爬虫教程,利用Python采集QQ群成员信息
  11. 博客中GIF动画超简单制作
  12. 新的深度学习模型可以准确识别睡眠阶段
  13. Oracle表中新增字段
  14. Mysql——DQL(查询语句语法、格式、举例)以及全部数据库源码,复制就可实现全部功能
  15. 你的贷款今天逾期了吗?
  16. Linux下设置代理方法
  17. linux 截取某一段时间的日志,存储到另一个文件中
  18. 企业邮箱如何发送国外邮件?2021知名企业邮箱网站排名
  19. Android 在APP内打开指定的QQ、QQ群
  20. Layui开关添加弹出确认框及layer.confirm的回调

热门文章

  1. 教你一招最屌的阅读开源项目的姿势
  2. mfc 鼠标移动到 button上面时 背景颜色改变_Python3与PyQt5编程示例:实现颜色拾取器小工具...
  3. delphi 去掉字符串中所有的标点符号_[话俾你知]Python使用正则处理字符串技巧(分割、替换)...
  4. 对unidbgrid的单元格操作
  5. RESTful风格编程
  6. [19/03/12-星期二] 数组_遍历(for-each)复制java.util.Arrays类
  7. Linux SD卡建立两个分区
  8. 在线客服代码,可以用
  9. 我这么玩Web Api(一):帮助页面或用户手册(Microsoft and Swashbuckle Help Page)
  10. Android 开发环境搭建之——ADT-Bundle for Windows