• 洛谷 P1588 丢失的牛


    题目描述

    FJ丢失了他的一头牛,他决定追回他的牛。已知FJ和牛在一条直线上,初始位置分别为x和y,假定牛在原地不动。FJ的行走方式很特别:他每一次可以前进一步、后退一步或者直接走到2*x的位置。计算他至少需要几步追上他的牛。

    输入输出格式

    输入格式:

     

    第一行为一个整数t(≤10),表示数据组数;接下来每行包含一个两个正整数x和y(0<x,y≤10^5),分别表示FJ和牛的坐标。

     

    输出格式:

     

    对于每组数据,输出最少步数。

     

    输入输出样例

    输入样例#1: 复制
    1 
    5 17
    输出样例#1: 复制
    4
    思路:宽搜一下就可以。
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int t,x,y;
    int ans=0x7f7f7f7f;
    void dfs(int pos,int tot){
        if(tot>ans)    return ;
        if(pos==y){
            ans=min(tot,ans);
            return ;
        }
        dfs(pos+1,tot+1);
        dfs(pos-1,tot+1);
        dfs(pos*2,tot+1);
    }
    int main(){
        scanf("%d",&t);
        while(t--){
            scanf("%d%d",&x,&y);
            dfs(x,0);
            cout<<ans<<endl;
        }
    }
    TLE的dfs
    #include<queue>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int t,x,y;
    int vis[500000];
    struct nond{
        int pos,step;
    };
    queue<nond>que;
    void bfs(int x){
        while(!que.empty())    que.pop();
        nond tmp;tmp.pos=x;tmp.step=0;
        vis[x]=1;que.push(tmp);
        while(!que.empty()){
            nond now=que.front();
            que.pop();
            nond a,b,c;
            c.pos=now.pos+1;c.step=now.step+1;if(c.pos<200000&&!vis[c.pos])    que.push(c),vis[c.pos]=1;
            if(c.pos==y){ cout<<c.step<<endl;break; }
            a.pos=now.pos-1;a.step=now.step+1;if(a.pos<200000&&!vis[a.pos])    que.push(a),vis[a.pos]=1;
            if(a.pos==y){ cout<<a.step<<endl;break; }
            b.pos=now.pos*2;b.step=now.step+1;if(b.pos<200000&&!vis[b.pos])    que.push(b),vis[b.pos]=1;
            if(b.pos==y){ cout<<b.step<<endl;break; }
        }
    }
    int main(){
        scanf("%d",&t);
        while(t--){
            memset(vis,0,sizeof(vis));
            scanf("%d%d",&x,&y);
            bfs(x);
        }
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    最全Redis面试题
    mabatisplus-update
    windows下安装redis并部署服务
    登录方案
    redis
    IntelliJ IDEA Debug模式启动项目
    物流跟踪 调用快递鸟API
    springboot中文官方文档
    国内物流地址
    什么是电磁兼容?什么是EMC设计?
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/8213657.html
Copyright © 2020-2023  润新知