POJ 3278 Catch That Cow
2013-07-29 13:46
225 查看
[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
题意:
给出农夫和牛的位置 农夫每次只能向前或向后走一步或向前走2*x(x为农夫当前位置)步
求农夫抓到牛的最短时间
代码:
思路:
bfs即可
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 37605 | Accepted: 11656 |
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
题意:
给出农夫和牛的位置 农夫每次只能向前或向后走一步或向前走2*x(x为农夫当前位置)步
求农夫抓到牛的最短时间
代码:
#include <iostream> #include <queue> # include <cstring> #include<cstdio> #define SIZE 100001 using namespace std; queue<int> x; int step[SIZE]; char visited[SIZE]={0}; int bfs(int n, int k) { memset (visited,0,SIZE); while (!x.empty()) //队列为非空时 x.pop(); //从队列前面移除元素,即将队列置为空 int head, next; x.push(n); //起始节点入队 visited = true; //标记n已访问 step = 0; //起始步数为0 while (!x.empty()) //队列为非空时 { head = x.front(); //取出队头 x.pop(); //移除队头 for (int i = 0; i < 3; i++) //三个方向搜索 { if (i == 0) next = head - 1; else if (i == 1) next = head + 1; else next = head * 2; //三种情况 if (next > SIZE || next < 0) continue; //越界就不考虑了 if (!visited[next]) //判重,若访问过则不用再访问 { x.push(next); //节点入队 step[next] = step[head] + 1; //步数+1 visited[next] = 1; //标记节点已访问 } if (next == k) return step[next]; //找到退出 } } } int main() { int n, k; while (scanf ("%d%d",&n,&k)!=EOF) { if (n >= k) cout << n - k << endl; //若n>=k,只能通过x-1操作 else cout << bfs(n, k) << endl; } return 0; }
思路:
bfs即可
相关文章推荐
- poj3278——Catch That Cow
- poj 3278 Catch That Cow
- POJ 3278: Catch That Cow
- poj 3278 Catch That Cow bfs
- ♥POJ 3278-Catch That Cow【搜索】
- poj3278 Catch That Cow BFS
- Poj 3278 Catch That Cow
- POJ 3278 Catch That Cow (BFS)
- POJ3278——Catch That Cow
- POJ 3278 Catch That Cow
- POJ 3278 Catch That Cow(追赶母牛)
- POJ 3278 Catch That Cow
- POJ 3278 Catch That Cow
- POJ-3278 Catch That Cow
- [POJ 3278]Catch That Cow[BFS]
- POJ3278——Catch That Cow
- poj3278——Catch That Cow
- Poj 3278 Catch That Cow
- POJ - 3278 Catch That Cow
- poj 3278 Catch That Cow