Description

Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.

* Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.

If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?

Input

Line 1: Two space-separated integers: N and K

Output

Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

Sample Input

5 17

Sample Output

4

Hint

The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
题意:

FJ要抓奶牛。

开始输入N(FJ的位置)K(奶牛的位置)。

FJ有三种移动方法:1、向前走一步,耗时一分钟。

2、向后走一步,耗时一分钟。

3、向前移动到当前位置的两倍N*2,耗时一分钟。

问FJ抓到奶牛的最少时间(奶牛不动)

解题思路:很明显我们求最短的时间就相当于求走的最少步数,所以我们就很容易想到用广搜BFS了,把每次FJ可以到的位置都压入队列,然后用一个vis数组标记FJ是否已经去过该位置了,再用 一个step数组存储FJ到该位置所需要的最短时间即可。要注意的是,他的位置也有范围是0-100000,开始我就是因为右区间少了个=号,WA了好几次,所以还是要细心。难的做不出只好做简单的了。。。

附上代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<string.h>
 4 #include<queue>
 5 using namespace std;
 6 int vis[100005];  //标记是否走过
 7 int step[100005]; //储存到该处的最短时间
 8 int n,k;
 9 queue<int> que;
10 int ans;
11
12 int BFS()
13 {
14     que.push(n);
15     step[n]=0;
16     vis[n]=1;
17     while(que.size())
18     {
19         int p=que.front();
20         que.pop();
21         if(p==k) break;
22         for(int i=0;i<3;i++)
23         {
24             int dx;
25             if(i==0) dx=p-1;
26             if(i==1) dx=p+1;
27             if(i==2) dx=2*p;
28             if(dx>=0&&dx<=100000&&vis[dx]==0)
29             {
30                 que.push(dx);
31                 step[dx]=step[p]+1;
32                 vis[dx]=1;
33             }
34
35         }
36     }
37     return step[k];
38 }
39
40 int main()
41 {
42     while(cin>>n>>k)
43     {
44         memset(vis,0,sizeof(vis));
45         memset(step,0,sizeof(step));
46         ans=BFS();
47         cout<<ans<<endl;
48     }
49     return 0;
50  } 

转载于:https://www.cnblogs.com/zjl192628928/p/9313363.html

POJ3287(BFS水题)相关推荐

  1. BZOJ2252(BFS水题)

    题意 给一个0 1矩阵,求每个0到最近的1的曼哈顿距离 水题 广搜即可 #include<iostream> #include<cstring> #include<cst ...

  2. AcWing 188. 武士风度的牛 BFS 水题

    题目描述 农民John有很多牛,他想交易其中一头被Don称为The Knight的牛. 这头牛有一个独一无二的超能力,在农场里像Knight一样地跳(就是我们熟悉的象棋中马的走法). 虽然这头神奇的牛 ...

  3. NoiOpenjudge水题选刷之_搜索

    1789:算24 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式.现在的问题是,是否存在一种方式使得得到的表达式的结果等于24. 这里加减乘除以及括号的运 ...

  4. 【TYVJ水题三连发】1502 兴建高铁 1568 Rabbit Number 1673 位图

    说是水题..其实本蒟蒻1A的也只有第二道...惭愧惭愧... TYVJ1502 兴建高铁 这个题目其实就是一搜索,愿意BFS或者DFS都可以,SPFA也随意.不过鉴于数据不大,推荐还是DFS(写起来比 ...

  5. A. 这是一道简单的水题~

    A. 这是一道简单的水题~ pbz最近沉浸在数学中无法自拔,他发现了一种非常有趣的数,这个数的十进制表示形式中只含有8和9,这个数有着很好的寓意,代表了pbz的梦想和期望,他想知道对于任意的给定的正整 ...

  6. 水题/poj 1852 Ants

    1 /* 2 PROBLEM:poj1852 3 AUTHER:Nicole 4 MEMO:水题 5 */ 6 #include<cstdio> 7 using namespace std ...

  7. HDU2673-shǎ崽(水题)

    如果不能够直接秒杀的题,就不算水题.又应证了那句话,有时候,如果在水题上卡住,那么此题对于你来说,也就不算是水题了额~~ 刚睡醒,迷迷糊糊. 题目的意思很简单,求一个最大的,再求一个最小的.几乎是什么 ...

  8. 图论刷水题记录(二)(最短路-----SPFA算法)

    继第一篇的后续,又来刷水题了,写的是SPFA算法,这个算法的复杂度比较玄学,感觉能不用就不用了,但是他的好处就是可以判断负圈. 3月26日: 1.POJ 1847 Tram 题意:在一个交通网络上有N ...

  9. 图论刷水题记录(一)(最短路-----dijkstra算法)

    最近实在不知道干些什么,感觉自己除了水题什么都不会做,算了去刷一刷图论的水题吧本来想合起来一起发,想了想太长的话以后看起来也不方便,题目所以今天晚上就先发了dij部分,由上到下由易变难. 1.POJ ...

最新文章

  1. Non-Maximum Suppression,NMS非极大值抑制
  2. vue从创建到完整的饿了么(12)miste.vue
  3. 一次性打开计算机任意程序的脚本(C语言)
  4. ​【Python】Python中的经典时间序列预测模型总结
  5. c++11 chrono
  6. CodeForces - 1174D Ehab and the Expected XOR Problem(构造+思维+位运算)
  7. Redis 一些高级用法
  8. ABAP 标准培训教程 BC400 学习笔记之五:ABAP 编程语言的变量,常量和字面量,以及文本符号
  9. [转载] Java中this和super关键字分别是什么意思
  10. 华为mate9云闪付功能_华为手机日常使用技巧
  11. ubuntu drbd双机互备
  12. oracle浅析导致数据库性能问题的常见原因
  13. java 多线程内存模型
  14. OV2640摄像头模块
  15. ec12编码器电路图_旋转编码器电路原理图
  16. 如何衡量一篇英语作文词汇丰富度?
  17. 比较好些的计算机论文题目,计算机论文题目大全(24页)-原创力文档
  18. 一篇文章学会ICP许可证如何年检
  19. java排序混乱的字符串字母和数字排序
  20. css3动画属性菜鸟,CSS3 animation-timing-function 属性 | 菜鸟教程

热门文章

  1. 晨哥真有料丨等女神分了我上位!
  2. java对象和字符串转换_java中字符串和JSON对象、Bean之间的相互转换
  3. java决策_机Java解决决策表
  4. HTTP家族详细讲解
  5. 字符串:1.存储结构
  6. 识别手指pos 20个
  7. 我的内核学习笔记:环境
  8. Windows下的Makefile
  9. Centos7没有ip地址
  10. 【Flink】Flink 小知识点 Flink 同时 保存 offset 到backend 和 kafka 内置 topic