zoukankan      html  css  js  c++  java
  • HUD 2717 Catch That Cow

    Catch That Cow
    Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 12798 Accepted Submission(s): 3950


    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.
    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。易知农夫走的范围不会超过2*k,超过2*k就得不到最小值。
    ``` #include #include

    const int MAXN = 100000+5;
    int dis[2MAXN];
    int q[2
    MAXN];

    int bfs(int n, int k)
    {
    memset(dis, -1, sizeof dis);
    dis[n] = 0;
    int l = 0, r = 0;
    q[r++] = n;
    while(l < r){
    int h = q[l++];
    if(h == k)
    return dis[k];
    int tmp = h-1;
    if(tmp >= 0 && dis[tmp] == -1){
    q[r++] = tmp;
    dis[tmp] = dis[h]+1;
    }
    tmp = h+1;
    if(tmp <= 2k && dis[tmp] == -1){
    q[r++] = tmp;
    dis[tmp] = dis[h]+1;
    }
    tmp = h
    2;
    if(tmp <= 2*k && dis[tmp] == -1){
    q[r++] = tmp;
    dis[tmp] = dis[h]+1;
    }
    }
    }

    int main()
    {
    int n, k;
    while(~scanf("%d%d", &n, &k)){
    int res = bfs(n, k);
    printf("%d ", res);
    }
    return 0;
    }

  • 相关阅读:
    parent和top
    history
    [矩阵快速幂]T-shirt(2018江苏邀请赛I题)
    [学习]Java学习
    [数论]Factors of Factorial
    [RMQ][ST算法]Frequent values
    [二维树状数组]计数问题
    [树状数组]Mishka and Interesting sum(codeforces703D)
    [简单思维题]Snuke's Coloring 2-1
    [树状数组][逆序数]Ultra-QuickSort
  • 原文地址:https://www.cnblogs.com/inmoonlight/p/6013424.html
Copyright © 2011-2022 走看看