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 - 1 or + 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.
一道bfs,开始考虑模拟,后来发现条件很多要考虑的东西太多了,就用了bfs
然后就是想界限问题,开始觉得要尽量小,后来看了别人代码再看数据觉得直接用题目中的数据做界限可以出结果
接着是各种调bug,其实方法一开始就写对了,但因为中间一两行代码的错误和没有发现导致不停的错
唉~今天的第二次了,第一次调了半个多小时,第二次直接调了一个半小时
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<cmath>
using namespace std;
#define maxn 100010
int n,k,vis[maxn];
struct node{int x,step;
};
void bfs(){node p;p.x = n,p.step = 0;vis[n] = 1;queue<node> q;q.push(p);while(!q.empty()){node tmp = q.front();q.pop();if(tmp.x == k){cout << tmp.step << endl;return;}for(int i=0;i<3;i++){int xx;if(i == 0){xx = tmp.x + 1;}else if(i == 1){xx = tmp.x - 1;}else xx = tmp.x * 2;if(xx < 0 || xx > maxn){continue;}if(!vis[xx]){vis[xx] = 1;//注意vis数组node tp;//这里新建一个结构体对象,不要在原来的tmp上加减!!!  在这里调了一个半小时!!!tp.x = xx;tp.step = tmp.step + 1;q.push(tp);}}}
}
int main(){while(cin >> n >> k){memset(vis,0,sizeof(vis));if(n<k){bfs();}else{cout << n - k << endl;}}return 0;
}

转载于:https://www.cnblogs.com/l609929321/p/7517556.html

Catch That Cow POJ - 3278 [kuangbin带你飞]专题一 简单搜索相关推荐

  1. poj 3728 Catch That Cow ([kuangbin带你飞]专题一 简单搜索)

    题目大意:题目链接 就是给你N,K,每次有三种惭怍+1,-1,*2,,问多少次操作能到K 解题思路,搜索直接算,.,,,哎,啥时候这种垃圾搜索我能直接A 啊,太菜了 #include<cstdi ...

  2. [kuangbin带你飞]专题一 简单搜索D - Fliptile(POJ 3279)

    题目大意 给一个N行M列的矩阵,值分别为0和1,每次你可以选择将一个变成相反状态,同时,它周围的四个数也会变为相反状态. 问:最少翻转多少次,可以将所有值都变成0 多个解,输出翻转次数最少的(若有次数 ...

  3. [kuangbin带你飞]专题1 简单搜索 J - Fire! UVA - 11624

    题目: Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of t ...

  4. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  5. C - Catch That Cow POJ - 3278

    C - Catch That Cow POJ - 3278 首先是大暴搜+最优化剪枝(当当前搜索情况不如已有答案优时,返回) #include<cstdio> #include<al ...

  6. “kuangbin带你飞”专题计划——专题十四:数论基础

    写在前面 1.目前还没啥写的.开始时间:2021-05-13(其实博客上看得到该博客创建时间的) 2.上一个专题刷的是网络流(博客总结),属于第一次接触.本来想的是一周特别高效,然后一周略划水,结果是 ...

  7. (2021-07-14~)“kuangbin带你飞”专题计划——专题十三:基础计算几何

    目录 前言 参考博客 自己总结的东西: 难度判断? 题目 1.[TOYS POJ - 2318 ](解决) 2.[Toy Storage POJ - 2398 ](解决) 3.[Segments PO ...

  8. kuangbin带你飞 专题1-23 题单

    kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...

  9. [kuangbin带你飞]专题1

    专题一 简单搜索 POJ 1321 棋盘问题 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大 ...

最新文章

  1. java newline_Java BufferedWriter.newLine()方法示例
  2. 性能测试相关名词解释
  3. java entries_Java leveldb遍历特定前缀的entries
  4. jQuery:localStorage用法
  5. 注意扩展方法的返回值类型
  6. java metrics 简书_Spring Boot Metrics
  7. 深入理解MySQL底层架构,看这一篇文章就够了!
  8. win10多合一原版系统_手把手教你制作官方原版的WIN10系统安装盘
  9. 知识越分享,收获越多。
  10. 使用requests通过代码实现接口测试自动化
  11. JS设计模式——责任链模式
  12. 汉字转拼音源码的两个类
  13. 【编码实现】结合encoder和projector对w进行优化(projector_encoder.py)
  14. 生活美学 | 8种咖啡冲煮器具分别有什么特点
  15. ch2第一个shiny应用_v1
  16. 精神分裂型患者大脑结构和功能连接的改变
  17. python nameerror什么意思_我用Python编写的GTIN程序中的“NameError”是什么意思?
  18. pycharm中django框架连接mysql数据库
  19. Selenium中级 | 在Selenium中模拟键盘操作
  20. mac删除自带的 ABC 输入法

热门文章

  1. mysql重置root密码centos_Centos7重置Mysql 8.0.1 root 密码
  2. 了解计算机中的信息编码教案,《信息编码》教学设计
  3. oracle怎么装系统,【Oracle安装与操作系统用户组】
  4. mysql binlog ignore db_MySQL binlog_ignore_db 参数最全解析
  5. python教案 md文件_python操作pdf文件.md
  6. Vue使用nextTick的原因和作用
  7. oracle的文件管理ofm,oracle 文件管理功能
  8. android旋转缩放布局,Android学习笔记(一):双指缩放及旋转计算
  9. php 科学计数 位数,PHP采用超长位数字运算防止数字以科学计数法显示的实例
  10. c语言实验分支程序设计二,C语言程序实验报告分支结构的程序设计(0页).doc