标签:print too pac cstring auto 代码 noip 搜索 lld
看似搜索树很大,但仔细观察后发现:
X=X-X这一操作好像没有用
X=X/X也就最多提供一个值为1的状态
那么就只剩下X=X+X和X=X*X这两个搜索方向,而且状态值的增长速度很快,那么一个BFS就好了
代码:
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#define ll long long
#define node(a,b) (node){a,b}
using namespace std;
struct node{
ll val,stp;
};
queue<node> q;
ll x,y;
int main(){
scanf("%lld%lld",&x,&y);
q.push(node(x,0)); if(x!=1)q.push((node(1,1)));
node u; ll v;
while(!q.empty()){
u=q.front(); q.pop();
if(u.val==y) {printf("%lld",u.stp); exit(0);}
v=u.val*2; if(v<=y) q.push(node(v,u.stp+1));
v=u.val*u.val; if(v<=y&&v!=1) q.push((node(v,u.stp+1)));
}
printf("-1");
return 0;
}
标签:print too pac cstring auto 代码 noip 搜索 lld
原文地址:http://www.cnblogs.com/zj75211/p/7625192.html