17.10.04
阿新 • • 發佈:2017-10-04
spa tabs val string cst first art ron false
- 中秋節到了呢。
- 上午
- 入門OJ 2062: [Noip模擬題]計蒜姬
看似搜索樹很大,但仔細觀察後發現:
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; }
- 入門OJ
- 下午
- 晚上
- End
17.10.04