http://noi.openjudge.cn/ch0205/2971/
总时间限制: 
2000ms

内存限制: 
65536kB
描述

农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:

1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟
 
假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?
输入
两个整数,N和K
输出
一个整数,农夫抓到牛所要花费的最小分钟数
样例输入
5 17
样例输出
4

BFS
 #include <iostream>

 #define maxn 100000

 using namespace std;

 int s,t,head,tail;

 bool vis[maxn+];

 struct node
{
int now,val;
}que[maxn+]; int main()
{
cin>>s>>t;
que[tail].now=s;
que[tail++].val=;
vis[s]=;
while(head<tail)
{
int now=que[head].now,val=que[head].val;
if(now==t)
{
cout<<val;
return ;
}
if(!vis[now*]&&now*<=maxn&&now)
{
que[tail].now=now*;
que[tail++].val=val+;
vis[now*]=;
}
if(!vis[now+]&&now+<=maxn&&now<t)
{
que[tail].now=now+;
que[tail++].val=val+;
vis[now+]=; }
if(!vis[now-]&&now>)
{
que[tail].now=now-;
que[tail++].val=val+;
vis[now-]=;
}
head++;
}
return ;
}

无限ER

 #include<iostream>
#include<cstdio>
#include<cstdlib> using namespace std; int n,k;
int b[]; struct sop
{
int sum;
int step;
}queue[]; void bfs(int n,int k)
{
int head=;
int tail=;
queue[tail].sum=n;
queue[tail].step=;
b[n]=;
while(head<tail)
{
head++;
if(queue[head].sum==k)
{
cout<<queue[head].step;
return;
}
if(!b[queue[head].sum*]&&(queue[head].sum*<=)&&(queue[head].sum!=))
{
tail++;
queue[tail].sum=queue[head].sum*;
b[queue[head].sum*]=;
queue[tail].step=queue[head].step+;
}
if(!b[queue[head].sum+]&&(queue[head].sum+<=)&&(queue[head].sum+<=k))
{
tail++;
queue[tail].sum=queue[head].sum+;
b[queue[head].sum+]=;
queue[tail].step=queue[head].step+;
}
if(!b[queue[head].sum-]&&(queue[head].sum->=))
{
tail++;
queue[tail].sum=queue[head].sum-;
b[queue[head].sum-]=;
queue[tail].step=queue[head].step+;
}
}
return ;
} int main()
{
cin>>n>>k; bfs(n,k);
return ;
}

AC题解

noi.openjudge——2971 抓住那头牛的更多相关文章

  1. OpenJudge 2971 抓住那头牛

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

  2. noi 2971 抓住那头牛

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

  3. OpenJudge 4001:抓住那头牛

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

  4. 【bfs】抓住那头牛

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

  5. [poj3278]抓住那头牛

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

  6. POJ-3278 抓住这头牛

    广搜解决. 广搜搜出最短路,直接输出返回就行了. 每个点只搜一次,而且界限进行一次判断. else 语句里面不要用if    else if,这样的话就直走一条路了. #include <ios ...

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

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

  8. BZOJ1646: [Usaco2007 Open]Catch That Cow 抓住那只牛

    1646: [Usaco2007 Open]Catch That Cow 抓住那只牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 634  Solved ...

  9. 2014.6.14模拟赛【bzoj1646】[Usaco2007 Open]Catch That Cow 抓住那只牛

    Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...

随机推荐

  1. shell脚本-基础

    shell脚本-基础 编程基础 程序是指令+ 数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell 程序提供了编程能力,解释执行. 计算运行二进 ...

  2. P4407 [JSOI2009]电子字典

    传送门 我的哈希打挂了--然而大佬似乎用哈希可以过还跑得很快-- 删除,枚举删哪个字符,记删之后的哈希值存map 插入,相当于在单词里删字符,去对应的map里查找 更改,相当于两个都删掉同一个位置的字 ...

  3. [Swift通天遁地]六、智能布局-(4)给视图添加锚点约束

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. ASP.NET MVC5 之 Log4Net 的学习和使用

    最近在学习 log4Net 插件,在博客园找到了好多资料,但是实现起来还是有点麻烦. 现在记录下学习的过程,期间可能加载着借鉴和转载的代码. 1.配置文件的设置: 新建config文件夹下 log4n ...

  5. DropDownList 数据源绑定和获取

    前台代码: <td>账户名称:</td> <td> <asp:DropDownList ID="DropDownListAccount" ...

  6. CF 436D 最小生成树

    设一个开头的虚节点,然后建稠密图,O(n^2).使用prim.O(n^2),保存方案,没什么好说的. #include <string.h> #include <stdio.h> ...

  7. 学习c语言的感想

    其实个人认为无论学习什么语言,最重要的是掌握习编程思想,然而C语言一种学习编程思想的基础语言.所以,C语言的重要性不言而喻. 一.课本 无论用的是什么书,要学好C语言,把书上的每一个例题.习题的代码读 ...

  8. C语言常量

    Constant包括4种类型: 整型 浮点型 枚举 字符型 #include <stddef.h> #include <uchar.h> int main() { /* Int ...

  9. Android项目实战_手机安全卫士流量统计

    ## 1.抽屉控件SlidingDrawer:一定要配置android:handle(把手)和android:content(内容),并在子View中添加把手和内容的布局```java <Sli ...

  10. JS——undefined、null

    1.undefined == false   //返回false 2.null == false     //返回false 3.undefined == null    //返回true 4.und ...