BJFU 1399 警察抓小偷
来源:互联网 发布:日本发型知乎 编辑:程序博客网 时间:2024/04/30 07:39
警察抓小偷
总提交:12 测试通过:4
描述
警察知道小偷的位置,想要抓住它。警察和小偷都位于数轴上,警察起始位于点N(0<=N<=100000),小偷位于点N(0<=K<=100000)。
警察有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟
假设小偷没有意识到警察的行动,站在原地不动。警察最少要花多少时间才能抓住小偷?
输入
有多组测试数据,每组一行,每行有两个数N,K。
输出
输出最短的时间.
样例输入
5 17
样例输出
4
本题原题为北大暑期培训第五期讲广搜时用到的例题
#include<iostream>
#include<queue>
using namespace std;
int a[100001],b[100001];
int main()
{
int k,n,y;
while(cin>>n>>k)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
queue<int>x;//建立名为x的队列
x.push(n);//在队列后加入n
a[n]=0;
while(x.size()!=0)//队列大小不为0
{
y=x.front();//y取队列首位
x.pop();//去掉队列首位
b[y]=1;
if(y==k)
break;
if(y-1>=0&&b[y-1]==0)
{
x.push(y-1);
a[y-1]=a[y]+1;
b[y-1]=1;
}
if(y+1<=100000&&b[y+1]==0)
{
x.push(y+1);
a[y+1]=a[y]+1;
b[y+1]=1;
}
if(2*y<=100000&&b[2*y]==0)
{
x.push(2*y);
a[2*y]=a[y]+1;
b[2*y]=1;
}
}
cout<<a[y]<<endl;
}
return 0;
}
- BJFU 1399 警察抓小偷
- 警察抓小偷
- 警察抓小偷
- bfs 警察抓小偷
- 第九周项目六警察抓小偷
- VB.NET中的事件与委托(警察抓小偷)
- Java线程同步问题之警察抓小偷
- 小偷被抓叫嚣:我不偷警察没饭吃
- 第9周项目6穷举法解决组合问题之警察抓小偷
- 算法设计与分析:第一张 算法分析介绍 1.2逻辑推理之警察抓小偷
- 【玩味】警察抓逃犯
- 密室抓小偷问题
- 抓小偷喽!!!
- poj 抓小偷
- 今天被警察抓了
- 委托的理解 (抓小偷
- Android_通过传感器抓小偷
- 警察与小偷博弈(博弈论的诡计)
- 解答《编程之美》1.18问题1:给所有未标识方块标注有地雷概率
- 安卓中找不到Theme.AppCompat.Light的解决方法
- Java中常用的数据库驱动程序名和数据库连接地址
- Cocos2dx之精灵坐标系
- usb debug上层相关知识
- BJFU 1399 警察抓小偷
- ios学习笔记:设置UIButton的文字显示位置、字体的大小、字体的颜色
- Java自学之路
- LeetCode || Symmetric Tree
- Spring+SpringMVC+Mybatis大整合(SpringMVC采用REST风格、mybatis采用Mapper代理)
- c++ string::replace用法
- 求正整数A和正整数B的二进制表示中有多少位是不同的
- Python——maketrans和translate方法
- element元素结点属性