zoukankan      html  css  js  c++  java
  • POJ

    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 - 1 or + 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.

    这道题是关于最短步数的,首先就要想到广搜,既然想到了广搜就可以写代码了。

    #include<iostream>
    #include<queue>
    #include<algorithm>
    #include<set>
    #include<cmath>
    #include<vector>
    #include<map>
    #include<stack>
    #include<bitset>
    #define Swap(a,b) a^=b^=a^=b
    #define cini(n) scanf("%d",&n)
    #define cinl(n) scanf("%lld",&n)
    #define cinc(n) scanf("%c",&n)
    #define coui(n) printf("%d",n)
    #define couc(n) printf("%c",n)
    #define coul(n) printf("%lld",n)
    #define speed ios_base::sync_with_stdio(0);//Çв»¿ÉÓÃscnaf£»
    #define Max(a,b) a>b?a:b
    #define Min(a,b) a<b?a:b
    using namespace std;
    typedef long long ll;
    const int INF=0x3f3f3f3f;
    const int maxn=1e6+10;
    const double esp=1e-9;
    int m,n,x,y;
    int cnt,mini=INF;
    bool flag[maxn];
    int bfs(int x);
    int main()
    {
        cin>>m>>n;
        cout<<bfs(m)<<endl;
    }
    int bfs(int x)
    {
        queue<pair<int,int> > t;
        t.push(make_pair(x,0));
        while(!t.empty())
        {
            pair<int,int>w=t.front();
            if(w.first==n)break;
            t.pop();
            w.first++,w.second++;
            if(w.first<0||w.first>100000||flag[w.first]);
            else t.push(w),flag[w.first]=1;
            w.first-=2;
            if(w.first<0||w.first>100000||flag[w.first]);
            else t.push(w),flag[w.first]=1;
            w.first++;
            w.first*=2;
            if(w.first<0||w.first>100000||flag[w.first]);
            else t.push(w),flag[w.first]=1;
        }
        return t.front().second;
    }
  • 相关阅读:
    dubbo
    Executer invokeAll
    java并发编程实战 java并发编程的艺术 阅读随笔
    小程序如何获取指定类名高度
    一些好用的Swift三方框架
    微信小程序checkbox多选传多个参数的操作
    关于xcode出现An unknown error occurred. See the install log for more details安装失败解决办法
    iOS 针对于13.0和暗黑模式出现的适配问题
    iOS UITextField如何禁止输入表情及特殊字符
    判断iPhoneX适配问题
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12798812.html
Copyright © 2011-2022 走看看