poj3278--Catch That Cow
2014-10-18 20:59
295 查看
Catch That Cow
Description
Farmer John has been informed of the location of a fugitive(逃亡的;难以捉摸的;短暂的) cow and wants to catch her immediately. He starts at a pointN (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 orX+ 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 andK
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.
题意:在一维坐标系中,给定John的位置,还有cow的位置,john有2种行动方式,(一)向前走一步(-1),想后走一步(+1);(二)跳到当前位置的2倍位置。
问:最少需要多少时间(分钟)可以抓到cow。
】】用vis数组优化。【【
【bfs搜索即可】:
上次写的代码有点乱,再整理一下,RE了好几遍,BFS里的if语句,需要加f.x>0 && f.x<100000。
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 48020 | Accepted: 15054 |
Farmer John has been informed of the location of a fugitive(逃亡的;难以捉摸的;短暂的) cow and wants to catch her immediately. He starts at a pointN (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 orX+ 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 andK
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.
题意:在一维坐标系中,给定John的位置,还有cow的位置,john有2种行动方式,(一)向前走一步(-1),想后走一步(+1);(二)跳到当前位置的2倍位置。
问:最少需要多少时间(分钟)可以抓到cow。
】】用vis数组优化。【【
【bfs搜索即可】:
#include<stdio.h> #include<string.h> #include<queue> int x[4]={-1, 1, 2}; int visit[200000+10]={0}; struct node{ int ans;//记录最短步数 int x;//存坐标 }que[200000+10], t, f; void BFS(int nn, int kk) { memset(que, 0, sizeof(que)); memset(visit, 0, sizeof(visit)); int s=0, e=0;//s为入队列的下表,e为出队列的下表。 que[s++].x = nn; visit[nn] = 1; t.ans = 0;//初始化刚开始的到K的步数为0; while(s>e) { t = que[e++]; for(int i=0; i<3; i++) { if(i!=2) f.x = t.x + x[i]; else f.x = t.x * x[i]; f.ans = t.ans + 1; if(f.x == kk) { printf("%d\n", f.ans); return; } if(f.x != kk && visit[f.x]==0 && (f.x>0 && f.x<100000) ) { que[s++] = f; visit[f.x] = 1; } } } } int main() { int n, k; while(~scanf("%d%d", &n, &k)) { if(n>=k){ printf("%d\n", n-k); continue; } else BFS(n, k); } return 0; }
上次写的代码有点乱,再整理一下,RE了好几遍,BFS里的if语句,需要加f.x>0 && f.x<100000。
相关文章推荐
- poj 3278 catch that cow (广度优先BFS)
- POJ-3278 Catch That Cow(广搜)
- POJ-3278 Catch That Cow(广搜+剪枝)
- POJ 3278 Catch That Cow(BFS 剪枝)
- poj 3278 Catch That Cow bfs
- poj 3278 Catch That Cow 广度优先算法
- POJ 3278 Catch That Cow(BFS)
- POJ 3278 Catch That Cow (bfs)
- POJ 3278 Catch That Cow
- HDU 2717&&poj 3278 Catch That Cow
- POJ_3278 Catch That Cow(BFS)
- poj 3278 Catch That Cow
- HDOJ-2717(POJ-3278) Catch That Cow
- hdu 2717 (poj 3278)Catch That Cow
- B-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 广度优先搜索