codeforces 520B Two Buttons[记忆化搜索]
来源:互联网 发布:淘宝店铺如何激活 编辑:程序博客网 时间:2024/05/28 06:04
B. Two Buttons
Vasya has found a strange device. On the front panel of a device there are: a red button, a blue button and a display showing some positive integer. After clicking the red button, device multiplies the displayed number by two. After clicking the blue button, device subtracts one from the number on the display. If at some point the number stops being positive, the device breaks down. The display can show arbitrarily large numbers. Initially, the display shows numbern.
Bob wants to get number m on the display. What minimum number of clicks he has to make in order to achieve this result?
The first and the only line of the input contains two distinct integers n and m (1 ≤ n, m ≤ 104), separated by a space .
Print a single number — the minimum number of times one needs to push the button required to get the numberm out of number n.
4 6
2
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include<string>#include<queue>#include<stack>#include<map>#define INF 0x3f3f3f3f#define mem(a,b) memset(a,b,sizeof(a))using namespace std;typedef long long LL;const int N=100007;struct node{ int cnt; int cur; node(int a,int b):cnt(a),cur(b){}};int vis[N];void bfs(int n,int m){ mem(vis,0); queue<node> que; que.push(node(0,n)); vis[n]=1; while(!que.empty()) { node cc=que.front(); que.pop(); if(cc.cur==m) { printf("%d\n",cc.cnt); break; } if(cc.cur-1>0&&!vis[cc.cur-1]) { que.push(node(cc.cnt+1,cc.cur-1)); vis[cc.cur-1]=1; } if(cc.cur*2<2*m&&!vis[cc.cur*2]) { que.push(node(cc.cnt+1,cc.cur*2)); vis[cc.cur*2]=1; } }}int main(){ int n,m; while(cin>>n>>m) { bfs(n,m); } return 0;}
- codeforces 520B Two Buttons[记忆化搜索]
- CodeForces 520B【Two Buttons】
- Codeforces 520B. Two Buttons
- Codeforces 520B.Two Buttons
- CODEFORCES:B. Two Buttons
- Codeforces 520B. Two Buttons spfa
- Codeforces 520 B Two Buttons BFS
- Codeforces 520B Two Buttons 【BFS】||【spfa】
- codeforces 520B Two Buttons BFS
- Codeforces 520B Two Buttons 题解
- CodeForces 520 B.Two Buttons(bfs)
- CodeForces 520B Two Buttons bfs+优先队列
- B. Two Buttons(Codeforces Round #295(div2))
- Codeforces Round #295 B. Two Buttons
- Codeforces 295 Div2 B.Two Buttons
- codeforces B. Cow Program (记忆化搜索)
- Codeforces 208 B Solitaire(记忆化搜索)
- cf 520 B. Two Buttons bfs
- 地鼠游戏---贪心
- bug统计分析续(一)基于SQL的Bug统计方法
- 关于泛型的一点理解
- dev 根据datatable动态生成gridview
- 对宁城哈哈一笑,很是真诚的抱拳说道。
- codeforces 520B Two Buttons[记忆化搜索]
- 使用while循环的注意事项:
- 气象业务系统切换国际标准时间
- JavaScript语言基础-环境搭建
- RelativeLayout, Framelayout的理解
- javax.naming.NameNotFoundException: myqueue not bound
- 查找最小的k个数
- ERROR 1052 : Column 'eid' in field list is ambiguous
- C++ 变量相除(/)注意事项 double 型比float型要快一点