1 条题解

  • 1
    @ 2022-10-3 9:07:06

    bfs+记忆化

    #include<bits/stdc++.h>
    using namespace std;
    long a[10010][4];
    bool q[10000];
    int main(){
    	long i,n,m,h,t;
    	cin>>n>>m;
    	if(n==m)
    	{
    		cout<<0;
    		return 0;
    	}
    	a[1][1]=n;
    	q[n]=1;
    	a[1][2]=0;
    	h=1;
    	t=2;
    	while(h<t)
    	{
    		if(a[H][1]>0)
    		{
    			if(!q[a[h][1]-1]){
    				a[t][1]=a[h][1]-1;
    				q[a[t][1]]=1;
    				a[t][2]=a[h][2]+1;
    				if(a[t][1]==m)
    				{
    					cout<<a[t][2];
    					return 0;
    				}
    				t++;
    			}
    			if(a[h][1]*2<=1e4&&!q[a[h][1]*2])
    				a[t][1]=a[h][1]*2;
    				q[a[t][1]]=1;
    				a[t][2]=a[h][2]+1;
    				if(a[t][1]==m)
    				{
    					cout<<a[t][2];
    					return 0;
    				}
    				t+;
    			}
    		}
    		h++;
    	}
    }
    
    • 1

    信息

    ID
    175
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    87
    已通过
    20
    上传者