• HDOJ/HDU 2717 Catch That Cow 一维广度优先搜索 so easy..............


    看题:http://acm.hdu.edu.cn/showproblem.php?pid=2717

    思路:相当于每次有三个方向,加1,减1,乘2,要注意边界条件,减1不能小于0,乘2不能超过最大值。

    然后还要注意N>=K的时候,只能减1才能到达。

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <vector>
    #include <algorithm>
    #include <sstream>
    #include <cstdlib>
    #include <fstream>
    #include <queue>
    using namespace std;
    struct node{
    	int pos,step;
    }p,q;
    int N,K,mmin;
    bool visit[200010];
    void bfs()
    {
    	queue<node> Q;
    	memset(visit,0,sizeof(visit));
    	p.pos=N;
    	p.step=0;
    	Q.push(p);
    	visit[N]=1;
    	while(!Q.empty())
    	{
    		p=Q.front();
    		Q.pop();
    		if(p.pos==K){
    			if(p.step<mmin)mmin=p.step;
    		}
    		for(int i=0;i<3;i++)
    		{
    			if(i==0){         //x+1; 
    				if(p.pos>K)
    					continue; 
    				q.pos=p.pos+1;
    				if(visit[q.pos])continue;
    				q.step=p.step+1;
    				Q.push(q);	
    				visit[q.pos]=1;
    			}
    			else if(i==1){    //x-1; 
    			
    
    				q.pos=p.pos-1;
    				if(visit[q.pos])continue;
    				if(q.pos<0)continue;
    				q.step=p.step+1;
    				Q.push(q);
    				visit[q.pos]=1;
    			}
    			else if(i==2){    //2*x;
    				if(p.pos>K)continue;
    				q.pos=2*p.pos;
    				if(visit[q.pos])continue;
    				if(q.pos>100000)continue;
    				q.step=p.step+1;
    				Q.push(q);
    				visit[q.pos]=1;
    			}
    			
    		}
    	}
    }
    int main()
    {
    	//ifstream fin;
    	//fin.open("data1.txt");
    	while(cin>>N>>K)
    	{
    		mmin=99999;
    		if(N>=K){
    			cout<<N-K<<endl;
    		}
    		else {
    			bfs();
    			cout<<mmin<<endl;
    		}
    			
    		
    	}
    	
    	return 0;
    
    }
    
     


  • 相关阅读:
    关于BFS
    关于bitset
    关于线段树(数组和指针两种实现方法)
    关于RMQ问题
    浅谈树状数组
    洛谷—— P3865 【模板】ST表
    洛谷—— P3807 【模板】卢卡斯定理
    2017-10-29-afternoon-清北模拟赛
    2017-10-29-morning-清北模拟赛
    51Nod 1526 分配 笔名
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3150307.html
Copyright © 2020-2023  润新知