poj 3278 Catch That Cow
2016-03-16 23:37
288 查看
[align=center]Catch That Cow[/align]
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 X - 1 or X + 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
Sample Output
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
一道简单的bfs题,只是注意要剪枝;
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 68738 | Accepted: 21645 |
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 X - 1 or X + 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
一道简单的bfs题,只是注意要剪枝;
#include<iostream> #include<cstdlib> #include<string> #include<algorithm> #include<cstdio> #include<cmath> #include<cstring> #include<stack> #include<queue> #include<iomanip> #include<map> #include<set> #include<functional> #define pi 3.14159265358979323846 using namespace std; int N,K; struct point { int x; int step; }; bool vis[100005]; int bfs() { memset(vis,0,sizeof(vis)); point temp; temp.x=N; temp.step=0; vis =1; queue<point> q; q.push(temp); point a,b,c; while(!q.empty()) { temp=q.front(); q.pop(); if(temp.x==K) return temp.step; a.x=temp.x-1; a.step=temp.step+1; if(a.x>=0&&a.x<=100000&&vis[a.x]==0) { vis[a.x]=1; q.push(a); } b.x=temp.x+1; b.step=temp.step+1; if(b.x>=0&&b.x<=100000&&vis[b.x]==0) { vis[b.x]=1; q.push(b); } c.x=temp.x*2; c.step=temp.step+1; if(c.x>=0&&c.x<=100000&&vis[c.x]==0) { vis[c.x]=1; q.push(c); } } } int main() { scanf("%d %d",&N,&K); if(N>=K) { printf("%d\n",N-K); } else { int ans=bfs(); printf("%d\n",ans); } return 0; }
相关文章推荐
- 获取股票实时交易数据的方法
- 2016/3/16 45道MySQL 查询练习题
- 蓝桥杯 高斯日记java程序
- 为什么32位操作系统最大支持4GB内存
- Android中XML绘图:Bitmap/Shape/Seletor和Layer
- JavaScript+html+css记忆翻牌游戏
- TOJ 1557.Color Me Less
- maven常用命令 与语法
- 什么是编程语言的强类型,弱类型
- MFC 关于MFC中CImage的简单使用
- 灵魂和身体
- html frame标签(点击左边框架内容而在右边框架做出反应)
- oracle 新建用户及授予权限
- Android LayoutInflater深度解析
- 第三次作业 词频统计
- 2.1php标签,语法,注释
- linux命令 awk学习
- python重新加载模块的方法有哪些
- 使用select异步IO实现socketserver服务器 源码剖析
- 不靠谱的tooltip