openjudge-noi-2.5-2971:抓住那头牛
2016-09-23 20:42
260 查看
总时间限制: 2000ms 内存限制: 65536kB
描述
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟
假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?
输入两个整数,N和K
输出一个整数,农夫抓到牛所要花费的最小分钟数
样例输入
样例输出
这个嘛....分分钟bfs然后判重搞定_(:з」∠)_
而且还是一维的so easy~~~
不说话给代码= =
显然看得懂~~我用构造函数有两个目的..一是为了省事~二是..嘿嘿嘿你们懂。
我感觉还是有一点浪费的..不过应该也不碍事.....
毕竟AC了...........
至于dfs我真的不能保证AC............
qwq
描述
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟
假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?
输入两个整数,N和K
输出一个整数,农夫抓到牛所要花费的最小分钟数
样例输入
5 17
样例输出
4
这个嘛....分分钟bfs然后判重搞定_(:з」∠)_
而且还是一维的so easy~~~
不说话给代码= =
#include<cstdio> #in 4000 clude<queue> using namespace std; struct cw { int m; int s; cw(){}; cw(int a,int b){m=a;s=b;} }c; queue<cw>a; int n,k,v[200005]; int main() { scanf("%d%d",&n,&k); a.push(cw(n,0)); v[n]=1; while(!a.empty()) { c=a.front(); a.pop(); if(c.m==k) { printf("%d",c.s); break; } if(c.m+1<=100000&&!v[c.m+1]) { v[c.m+1]=1; a.push(cw(c.m+1,c.s+1)); } if(c.m-1>=0&&!v[c.m-1]) { v[c.m-1]=1; a.push(cw(c.m-1,c.s+1)); } if(c.m*2<=200000&&!v[c.m*2]) { v[c.m*2]=1; a.push(cw(c.m*2,c.s+1)); } } }
显然看得懂~~我用构造函数有两个目的..一是为了省事~二是..嘿嘿嘿你们懂。
我感觉还是有一点浪费的..不过应该也不碍事.....
毕竟AC了...........
至于dfs我真的不能保证AC............
qwq
相关文章推荐
- OpenJudge 2.5-2971 Catch That Cow(抓住那头牛)
- OpenJudge noi 2971抓住那头牛(POJ 3278)
- noi.openjudge——2971 抓住那头牛
- NOI OpenJudge 2971:抓住那头牛 BFS
- 【NOI】2971 抓住那头牛
- openjudge 2971:抓住那头牛 解题报告
- noi 2971 抓住那头牛
- 2971:抓住那头牛
- 2971:抓住那头牛题解
- OpenJudge 2971 抓住那头牛
- 2971:抓住那头牛
- 【openjudge】抓住那头牛
- openjudge-noi-2.5-156:LETTERS
- 2971:抓住那头牛
- noi 抓住那头牛
- openjudge-noi-2.5-7084:迷宫问题
- NOI题库2.5 6264 走出迷宫
- [OpenJudge-NOI]连乘积末尾0的个数
- [OpenJudge-NOI]算24 Dfs
- Openjudge-NOI题库-字符串移位包含问题