Catch That Cow
来源:互联网 发布:无线传感器网络三要素 编辑:程序博客网 时间:2024/06/05 03:34
Catch That Cow
Time Limit: 2000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem 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.
Example Input
5 17
Example Output
4
Hint
poj3278 有链接提示的题目请先去链接处提交程序,AC后提交到SDUTOJ中,以便查询存档。
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.
Author
think:
广度优先搜索,结构体加数组。
这道题目我先在oj上提交,ac之后,然后去poj提交,结构居然MLE,超内存,然后我改成了十万的,再提交,WA,瞬间,我就很懵,oj后台的数据真的很少,到了poj就不可行了,然后改完之后ac了………
oj上ac的代码:
#include <stdio.h>#include <stdlib.h>#include <string.h>struct node{ int data; int ans;}que[12121212], p, q;int v[1212111];int n, m;void bfs(int n, int m){ int front = 0, rear = 0; p.data = n; p.ans = 0; que[rear++] = p; v[p.data] = 1; while(front<rear) { q = que[front++]; if(q.data==m) { printf("%d\n", q.ans); return ; } if(q.data-1>=0&&v[q.data-1]==0) { p.data = q.data-1; p.ans = q.ans+1; que[rear++] = p; v[p.data] = 1; } if(q.data+1<=m&&v[q.data+1]==0) { p.data = q.data+1; p.ans = q.ans+1; que[rear++] = p; v[p.data] = 1; } if(q.data*2<=m&&v[q.data*2]==0) { p.data = q.data*2; p.ans = q.ans+1; que[rear++] = p; v[p.data] = 1; } } printf("-1\n");}int main(){ while(~scanf("%d %d", &n, &m)) { memset(v, 0, sizeof(v)); memset(que, 0, sizeof(que)); bfs(n, m); } return 0;}
poj:
#include <stdio.h>#include <stdlib.h>#include <string.h>struct node{ int data; int ans;}que[111212], p, q;int v[121111];//十万的数据量,不要开太大int n, m;void bfs(int n, int m){ int front = 0, rear = 0; p.data = n; p.ans = 0; que[rear++] = p; v[p.data] = 1; while(front<rear) { q = que[front++]; if(q.data==m) { printf("%d\n", q.ans); return ; } if(q.data-1>=0&&q.data-1<=100000&&v[q.data-1]==0)//农民走的点可以是在奶牛之后,只要不超过100000就可以了××× { p.data = q.data-1; p.ans = q.ans+1; que[rear++] = p; v[p.data] = 1; } if(q.data+1<=100000&&q.data+1>=0&&v[q.data+1]==0)//农民走的点可以是在奶牛之后,只要不超过100000就可以了××× { p.data = q.data+1; p.ans = q.ans+1; que[rear++] = p; v[p.data] = 1; } if(q.data*2<=100000&&q.data*2>=0&&v[q.data*2]==0)//农民走的点可以是在奶牛之后,只要不超过100000就可以了××× { p.data = q.data*2; p.ans = q.ans+1; que[rear++] = p; v[p.data] = 1; } } printf("0\n");}int main(){ while(~scanf("%d %d", &n, &m)) { memset(v, 0, sizeof(v)); memset(que, 0, sizeof(que)); bfs(n, m); } return 0;}
- POJ3278 Catch That Cow
- Catch That Cow
- Catch That Cow
- poj3278 Catch That Cow
- 3278. Catch That Cow
- 【HDU2717】-Catch that cow
- Catch That Cow
- F - Catch That Cow
- poj3278 - Catch That Cow
- HDOJ Catch That Cow
- 2717Catch That Cow
- POJ3278 Catch That Cow
- 3278Catch That Cow
- Catch That Cow(bfs)
- Catch that cow (H2717)
- POJ3278--Catch That Cow
- Catch That Cow
- Catch That Cow+BFS
- ViewObject
- TCP/IP学习笔记(九)——ICMP:Internet控制报文协议
- Spring IOC
- cadence学习问题记录
- 1108. Finding Average (20)
- Catch That Cow
- 获取文件夹下所有文件和文件夹(递归)
- C++的数组元素为什么不能是引用类型
- MAVEN_依赖管理
- 让Win32窗口程序拥有控制台窗口
- 一条 sql group by
- PL/SQL结构
- [USACO3.3.5]A Game
- getLocationInWindow()与getLocationOnScreen()