zoukankan      html  css  js  c++  java
  • noi 2971 抓住那头牛

    2971:抓住那头牛

    总时间限制: 
    2000ms
     
    内存限制: 
    65536kB
    描述

    农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:

    1、从X移动到X-1或X+1,每次移动花费一分钟
    2、从X移动到2*X,每次移动花费一分钟
     
    假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?
    输入
    两个整数,N和K
    输出
    一个整数,农夫抓到牛所要花费的最小分钟数
    样例输入
    5 17
    样例输出
    4

    BFS也要记得标记!!!

    #include <bits/stdc++.h>
    using namespace std;
    
    struct Node {
        int x;
        int step;
    };
    
    bool vis[100000];
    
    int main()
    {
        int n,k;
        scanf("%d%d",&n,&k);
        Node u;
        u.x = n;
        u.step = 0;
        queue<Node> q;
        q.push(u);
        while(!q.empty()) {
            u = q.front();
            q.pop();
            if(u.x==k) {
                printf("%d
    ",u.step);
                break;
            }
            Node x=u,y=u,z=u;
            x.x --;
            x.step ++;
    
            if(x.x>=0&&!vis[x.x]) {
                vis[x.x] = true;
                q.push(x);
            }
    
            y.x ++;
            y.step ++;
    
            if(y.x<=100000&&!vis[y.x]) {
                vis[y.x] = true;
                q.push(y);
            }
    
            z.x = z.x*2;
            z.step ++;
            if(z.x<=100000&&!vis[z.x]) {
                vis[z.x] = true;
                q.push(z);
            }
        }
    
        return 0;
    }
  • 相关阅读:
    ajax跨域名
    js(鼠标键盘拖动事件)
    关于servlet转发和重新定向
    ztree的异步加载
    关于三层(dao,serviece,servlet)
    serclet监听器
    servlet(2)response常用方法
    servlet(1)request常用方法
    .post
    A1146 Topological Order
  • 原文地址:https://www.cnblogs.com/TreeDream/p/6063543.html
Copyright © 2011-2022 走看看