标签: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