POJ3278——Catch That Cow

Catch That Cow
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 114140 Accepted: 35715

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 - 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.

Source

USACO 2007 Open Silver
终于A掉这道题,BFS新认知。
#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#include<vector>
#include<cmath>
#include<cstring>
#include<string> #define N 100010using namespace std;void in(int &x){register char c=getchar();x=0;int f=1;while(!isdigit(c)){if(c=='-') f=-1;c=getchar();}while(isdigit(c)){x=x*10+c-'0';c=getchar();}x*=f;
}int a,b,ans;
struct Step{int v,w;//位置,步数 Step(int xx,int s):v(xx),w(s){ }
};
bool vis[N];
queue<Step>Q;void BFS(){memset(vis,0,sizeof(vis));vis[a]=1;Q.push(Step(a,0));while(!Q.empty()){Step s=Q.front();Q.pop();if(s.v==b) {ans=s.w;break;}else {if(s.v-1>=0 && !vis[s.v-1]){Q.push(Step(s.v-1,s.w+1));vis[s.v-1]=1;}if(s.v+1<=N &&!vis[s.v+1]){Q.push(Step(s.v+1,s.w+1));vis[s.v+1]=1;}if(s.v*2<=N && !vis[s.v*2]){Q.push(Step(s.v*2,s.w+1));vis[s.v*2]=1;}}}
}int main()
{in(a);in(b);BFS();printf("%d\n",ans);return 0;
}

  

转载于:https://www.cnblogs.com/song-/p/9263277.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

canvas画出简陋版随鼠标转动眼睛且会眨眼的可爱樱桃小丸子

可到我的github上下载文件 需求&#xff1a; 刚加载时鼠标不移动&#xff0c;眼睛会不停地眨眼眼球会跟随鼠标移动而移动鼠标不移动时恢复眨眼效果提示&#xff1a; 除了眼睛是动态以外&#xff0c;其他静态绘制都在static()函数中利用椭圆的短轴长度先变短后恢复长度来模拟…

poj 2049(二分+spfa判负环)

poj 2049&#xff08;二分spfa判负环&#xff09; 给你一堆字符串&#xff0c;若字符串x的后两个字符和y的前两个字符相连&#xff0c;那么x可向y连边。问字符串环的平均最小值是多少。1 ≤ n ≤ 100000&#xff0c;有多组数据。 首先根据套路&#xff0c;二分是显然的。然后跑…

Vue学习笔记(一)—— 什么时候需要import Vue from 'vue'

一、当执行 import vue from ‘vue’ 时发生了什么&#xff1f; 其实在 node.js 中&#xff0c;执行 import 就相当于执行了 require&#xff0c;而 require 被调用&#xff0c;就会用到 require.resolve 这个函数来查找包的路径&#xff0c;而这个函数在 nodejs 中会有一个关于…

es6 --- 用promise对象实现Ajax操作的一个实例

首先回顾一下Ajax请求的步骤 var client new XMLHttpRequest(); client.open("GET", url); client.onreadystatechange handler; client.responseType "json"; client.setRequestHeader("Accept", "application/json"); client.s…

Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini以及服务无法启动的解决办法以及修改初始密码的方法...

LZ初学SQL&#xff0c;本来以为开源的安装很简单&#xff0c;但是中间出现了一些问题&#xff0c;记录下来&#xff0c;希望能帮助到他人。 mysql官网下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/点击打开链接 以5.7.20版本为例 首先安装包解压后&#xff0c;没…

总结 构造函数与非构造函数 原型继承的一个方法

这两天真的一直在看原型以及继承之间的千丝万缕&#xff0c;哇&#xff0c;收获颇多&#xff0c;不过所谓温故知新&#xff0c;还是要多复习复习知识点&#xff0c;才能察觉那些之前不易发现的小小sparkle 真心推荐MDN文档——对象原型&#xff0c;JavaScript 中的继承&#x…

【深度学习】caffe 中的一些参数介绍

一个优秀的算法工程师51%的时间在调参数&#xff0c;48%的时间在测试模型&#xff0c;剩下的1%时间再写代码。段子虽然是网上看来的&#xff0c;但调参数是真的心碎。像我这样的小萌新更是觉得无从下手。只有知己知彼&#xff08;了解每个参数的含义&#xff09;&#xff0c;才…

Vue学习笔记(二)—— vue项目中使用axios

一、文档链接 axios文档 vue开发插件 二、axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端&#xff0c;它本身具有以下特征&#xff1a; 从浏览器中创建 XMLHttpRequest 从 node.js 发出 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应…

es6 --- promise.prototype.then的链式引用

很多时候,我们需要使用ajax请求获取数据A.并使用A中的数据A.a来进行下一步的Ajax操作… 下面使用promise.prototype.then的链式引用来实现 // 首先封装一个getJSON的方法. var getJSON function (url) {var promise new Promise(function (resolve, reject) {var client ne…

jquery对json 键值对或数组的增加、删除、遍历操作

在前端遍历json键值对或数组遍历的情况也会经常用到&#xff0c;我们知道在java、c#其它的语言里提供方便的方法来操作&#xff0c;那么在json里面有没有类似的方法呢&#xff0c;废话就不多说了上代码&#xff1a;var jsonStr{}; //增加 jsonStr["name1"]"yu&q…

廖雪峰老师Git教程代码梳理

建立版本库 创建一个版本库非常简单&#xff0c;首先&#xff0c;选择一个合适的地方&#xff0c;创建一个空目录&#xff08;repository&#xff09;&#xff1a; $ mkdir learngit //创建learngit目录 $ cd learngit //切换当前目录为learngit目录 $ pwd //用于显示当…

BZOJ2006 [NOI2010]超级钢琴 【堆 + RMQ】

2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 3446 Solved: 1692[Submit][Status][Discuss]Description 小Z是一个小有名气的钢琴家&#xff0c;最近C博士送给了小Z一架超级钢琴&#xff0c;小Z希望能够用这架钢琴创作出世界上最美妙的音乐。 这…

Vue项目代码改进(六)—— vue的mixins的使用

混入可以将不同组件的共同内容部分在一个混入对象中展示&#xff0c;然后通过在组件实例中混入这个对象&#xff0c;这样拥有这些属性的组件都可以调用 混入对象中的属性名跟组件中的属性名冲突时&#xff0c;以组件自身的为基准 举例&#xff1a;单文件组件users.vue 1&#x…

es6 --- Promise.catch

Promise.prototype.catch(): 是.then(null, rejection)的别名,用于指定发生错误时的回调函数 p.then( (val) -> console.log(fulfilled:, val)).catch( (err) > console.log(rejected, err));// 等同于 p.then( (val) > console.log(fulfilled:, val)).then(null, (e…

爬虫的一些工具(二)

爬虫的一些工具(二) 1. 常有的工具 (1). python(2). pycharm(3).浏览器i.chromeii.火狐(4).fiddler的使用2 fiddler的使用 (1).操作界面(2)界面含义请求(Request)部分详解名称含义Headers显示客户端发送到服务器的 HTTP 请求的,header 显示为一个分级视图&#xff0c;包含了 We…

微信开发者工具一打开代码编辑区文件全部不见了

今天开微信开发者工具时&#xff0c;一打开竟然文件全部不见了&#xff01;然后页面也编译不出来&#xff0c;搜了一下大神们的建议&#xff1a; 1、在编辑器控制台输入&#xff1a;openVendor 回车 会打开一个文件夹&#xff1a;C:\Users\Administrator\AppData\Local\微信we…

vue项目中所使用的element-UI / echarts

高清版思维导图见后台管理项目地址 1.login登录页面 < el-form >表单 在 Form 组件中&#xff0c;每一个表单域由一个 Form-Item 组件构成&#xff0c;表单域中可以放置各种类型的表单控件&#xff0c;包括 Input、Select、Checkbox、Radio、Switch、DatePicker、TimeP…

es6 --- 使用yield*命令遍历完全二叉树

首先定义二叉树的结构: // 定义二叉树的结构 function Tree(left, label, right) {this.left left;this.label label;this.right right; }// 对二叉树采用中序遍历 function* inorder(t) {if(t) {yield* inorder(t.left);yield t.label;yield* inorder(t.right);} }// 生成…

面向对象之继承与派生

阅读目录 一 初识继承二 继承与抽象&#xff08;先抽象再继承&#xff09;三 继承与重用性四 派生五 组合与重用性六 接口与归一化设计七 抽象类八 继承实现的原理&#xff08;可恶的菱形问题&#xff09;九 子类中调用父类的方法一 初识继承 什么是继承 继承是一种创建新类的方…

SpringBoot(十三)-- 不同环境下读取不同配置

一、场景&#xff1a; 在开发过程中 会使用 开发的一套数据库&#xff0c;测试的时候 又会使用测试的数据库&#xff0c;生产环境中 又会切换到生产环境中。常用的方式是 注释掉一些配置&#xff0c;然后释放一下配置。SpringBoot提供了在不同环境下切换不同配置的功能&#xf…