3060 抓住那头奶牛

USACO

 时间限制: 1 s
 空间限制: 16000 KB
 题目等级 : 黄金 Gold
 
题目描述 Description

农夫约翰被告知一头逃跑奶牛的位置,想要立即抓住它,他开始在数轴的N 点(0≤N≤100000),奶牛在同一个数轴的K 点(0≤K≤100000)。

约翰有两种移动方式:1 分钟内从x 点移动到x+1 或x-1;1 分钟内从x 点移动到2x。假设奶牛不会移动,约翰抓住它需要多少时间?

输入描述 Input Description

一行两个整数N 和K,用空格隔开。

输出描述 Output Description

约翰抓住它需要的最少时间

样例输入 Sample Input

5 17

样例输出 Sample Output

4

数据范围及提示 Data Size & Hint

见题目

分类标签 Tags 点此展开

 
 
这道题的难点是你需要处理三种方向。我是直接进行枚举的
 
如下:
 
 #include<cstdio>
#include<queue>
#define maxn 100001 using namespace std; int n,k;
bool v[maxn]; struct node
{
int pos,step;
}cur,nxt; queue<node>q;//该队列是为了储存结构体中的pos,以及step void Q_work()
{
cur.pos=n;
cur.step=;//进行初始化
q.push(cur);
v[n]=true;
if(n==k) //特判如果起点与重点是重合的
{
printf("");
return;
}
while(!q.empty())
{
cur=q.front();
q.pop();//取出队头元素,将其出队
nxt.step=cur.step+;//下一步一定是为当前的步数+1
for(int i=;i<=;i++)
{
switch(i)//枚举行走的三种情况
{
case : nxt.pos=cur.pos+; break;
case : nxt.pos=cur.pos-; break;
case : nxt.pos=cur.pos*; break;
}
if(nxt.pos>=&&nxt.pos<=&&!v[nxt.pos])
{//必须不超过边界并且当前并未走过
if(nxt.pos==k)
{
printf("%d",nxt.step);//如果==k则说明已经到达,则进行输出
return;
}
q.push(nxt);//将其入队
v[nxt.pos]=true;//并进行标记
}
}
}
} int main()
{
scanf("%d%d",&n,&k);
Q_work();
return ;
}

codevs 3060 抓住那头奶牛 x的更多相关文章

  1. 双向广搜 codevs 3060 抓住那头奶牛

    codevs 3060 抓住那头奶牛 USACO  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold   题目描述 Description 农夫约翰被告知一头逃跑奶牛 ...

  2. 3060 抓住那头奶牛 USACO

    3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛的位置,想要立即抓住它, ...

  3. noi 2971 抓住那头牛

    2971:抓住那头牛 查看 提交 统计 提问 总时间限制:  2000ms 内存限制:  65536kB 描述 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0<=N ...

  4. 【bfs】抓住那头牛

    [题目] 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000),牛位于点K(0≤K≤100000).农夫有两种移动方式: 1.从X移动到X-1或X+1,每次 ...

  5. OpenJudge 2971 抓住那头牛

    总时间限制:  2000ms 内存限制:  65536kB 描述 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0< ...

  6. codevs贪吃的九头龙

    传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落.有一天,有M 个 ...

  7. noi.openjudge——2971 抓住那头牛

    http://noi.openjudge.cn/ch0205/2971/ 总时间限制:  2000ms 内存限制:  65536kB 描述 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫 ...

  8. [poj3278]抓住那头牛

    题目描述 Farmer John has been informed of the location of a fugitive cow and wants to catch her immediat ...

  9. OpenJudge 4001:抓住那头牛

    题目链接 题解: 这个题可以用广搜来解决,从农夫到牛的走法每次都有三种选择,定义一个队列,把农夫的节点加进队列,然后以这三种走法找牛,队列先进先出,按顺序直到找到牛的位置. 代码: #include& ...

随机推荐

  1. Java多线程学习——知识点积累

    开启多线程时,每一个线程都拥有自己的工作空间,每个工作空间都单独的和主存打交道. 并发的概念:多个线程同时操作同一个对象 当产生并发时,如果从工作空间写入数据到内存的线程时间片用完了,其他线程再从主存 ...

  2. 【Linux开发】IO streaming DMA buffer importing

    http://linuxtv.org/downloads/v4l-dvb-apis/dmabuf.html I/O流 (DMA缓存引用) 这是一个实验性接口,将来可能发生改变 DMABUF框架提供了在 ...

  3. C盘无损扩容(傻逼拯救者128G固态分两个盘)

    下载DiskGenius.exe 进行拆分分区(我从d盘拆分出20G给c盘) 然后右键此电脑,管理->磁盘管理 选中刚分出来的20G空间指向到c盘

  4. [Git] 017 加一条分支,享双倍快乐

    0. 回顾 [Git] 009 逆转未来 中的 "2.2" 讲过 git checkout -- <file> 这回的 git checkout <branch_ ...

  5. windows下重启nginx

    参考:从零学nginx-windows下reload配置无效及如何重启 因为Nginx是多进程模型,有一个主进程和多个子进程,主进程只负责管理子进程,基本的网络事件由各个子进程处理. 所以有时候当我们 ...

  6. ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;

    参考来源:https://blog.csdn.net/yuxinha11/article/details/80090197 ENGINE=InnoDB不是默认就是这个引擎吗?——是的,如果不写也是ok ...

  7. IntelliJ IDEA中创建Web聚合项目(Maven多模块项目)(转载)

    创建parent项目 1.打开IDEA,注意这里不要勾选模板,用模板创建过maven项目的小伙伴都知道模板创建项目非常慢,所以这里不要选模板,需要的文件夹我们后面自己来创建就可以了.所以这个页面直接点 ...

  8. Node.js+koa2

    const Koa = require('koa') const app = new Koa() const bodyParser = require('koa-bodyparser') app.us ...

  9. 使用SecureCRT 8.5快速打开sftp传输文件

    一般使用Windows系统上安装的SecureCRT 8.5软件远程连接Linux服务器,通常给Linux系统传输文件或者使用FTP,或者使用SFTP等其他第三方软件,有时Linux系统上还需要做其他 ...

  10. C#导出大量数据到excel,怎么提升性能

    一,要提升性能,我们先要知道耗时的地方在哪里 1,数据库查询,2,把数据组合成新集合循环嵌套太多 二,那我们怎么优化呢? 一,数据库查询,1>,数据库查询:如果数据量小,我们可以用临时datat ...