POJnbsp;nbsp;3278nbsp;nbsp;Catchnbsp;Thatnbsp;Cow

2023-10-20 03:58

本文主要是介绍POJnbsp;nbsp;3278nbsp;nbsp;Catchnbsp;Thatnbsp;Cow,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Catch That Cow
Time Limit: 2000MSMemory Limit: 65536K
Total Submissions: 24664Accepted: 7604

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
泪奔了,跑了797MS,简单BFS,注意n==k的情况,还有如果n>=k,直接就可以判断是n-k了
代码(附测试数据):
#include<stdio.h>
typedef struct point{
int x,step;
}target;
target que[5000000];
int map[5000000]={0},k;
int BFS(int n)
{
int i,end,top;
target next,in;
if(n==k)
return 0;
end=top=0;
que[top].x=n;
que[top].step=0;
while(top>=end)
{
in=que[end];
end=(end+1)% 5000000;
for(i=0;i<3;i++)
{
if(i==0)
next.x=in.x+1;
else if(i==2)
next.x=in.x-1;
else next.x=in.x*2;
if(next.x==k)
return in.step+1;
if(next.x>=0&&next.x<5000000&&map[next.x]==0)
{
map[next.x]=1;
top=(top+1)% 5000000;
next.step=in.step+1;
que[top]=next;
}
}
}
return 0;
}
int main()
{
int num,n;
scanf("%d%d",&n,&k);
map[n]=1;
if(k<=n)
num=n-k;
else
num=BFS(n);
printf("%d\n",num);
return 0;
}
测试数据:
1 1
0
1 5
3
5 1
4
1 100000
21
200 100000
16
13 15000
15
21 4500
14
64 7913
12
15 438
8
159 753
32
486 4267
52
147 963
31
486 15347
14

这篇关于POJnbsp;nbsp;3278nbsp;nbsp;Catchnbsp;Thatnbsp;Cow的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/244489

相关文章

【POJ】3660 Cow Contest floyd(可以拓扑排序?)

Cow Contest Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 6925 Accepted: 3792 Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating i

BFS —— POJ 3278 Catch That Cow

对应POJ题目:点击打开链接 Catch That Cow Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 54686 Accepted: 17096 Description Farmer John has been informed of the location of a fugitive cow

USACO Section 2.3 Cow Pedigrees

题意: N个节点  深度为K  的正则二叉树  求  树有几种形态 思路: 一开始以为是数学题…  看了byvoid的题解才知道是dp… 每棵树由根节点、左子树、右子树构成  由此得状态转移  树=左子树*右子树 节点数和深度是影响答案的属性  所以令dp[i][j]表示i个节点深度在j以内的树的形态数 深度在j以内的树又两个深度在j-1以内的树和一个根节点构成 设左子树k个节

Codeforces 283. B. Cow Program记忆化搜索

output standard output Farmer John has just given the cows a program to play with! The program contains two integer variables, x and y, and performs the following operations on a sequence a1, a2, ..

Ubuntunbsp;出现apt-get:nbsp;Packag…

学习了 原文地址:Ubuntu 出现apt-get: Package has no installation candidate问题 作者:zhou4539   Ubuntu 出现apt-get: Package has no installation candidate问题 分类: 系统-Linux 2011-12-18 13:32 751人阅读 评论(0) 收藏 举报 今天在

微信公众平台nbsp;10.29日更新nbsp;之己见

曾经有前辈说过,无论微信 5.0 的部分功能做的有多差,但是这是微信转型的一个里程碑。起初,笔者有点不太理解其中的道理,但是随着自己做了些东西东西后,才慢慢发现,这种先推广后优化,让用户去引导功能开发的策略是多么的明智。 此前,网络曾有谣言,微信服务号将于明年起收3000元/年的年费,这一传言尚未被证实,昨天微信公众平台正式推出了微信认证这一个功能,服务号可以花费300元进行认

C语言的条件编译#if,nbsp;#elif…

原文地址:C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef 作者:Embeder 有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指

结构体定义nbsp;typedefnbsp;structnbsp;…

很不错 原文地址:结构体定义 typedef struct 用法详解和用法小结 作者:紫心玲儿 typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。 具体区别在于: 若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node

C++nbsp;usingnbsp;namespacenbsp;stdnbsp;详解

一 : 和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。  后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。  因此,当使用时,相当于在c中调用库函数,使用

C++的dllexport和dllimportnbsp;nbsp;…

C++的dllexport和dllimport: __declspec(dllexport) 声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类 __declspec(dllimport)