站外题,运行错误求解(信奥赛1253抓住这头牛)
  • 板块题目总版
  • 楼主xiaozeming
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/30 15:37
  • 上次更新2023/11/3 00:20:42
查看原帖
站外题,运行错误求解(信奥赛1253抓住这头牛)
793341
xiaozeming楼主2023/8/30 15:37

1253:抓住那头牛

时间限制: 1000 ms

内存限制: 65536 KB

提交数: 28039

通过数: 11162

【题目描述】 农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000) ,牛位于点K(0≤K≤100000) 。农夫有两种移动方式:

1、从X 移动到X−1 或X+1 ,每次移动花费一分钟

2、从X移动到2×X ,每次移动花费一分钟

假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?

【输入】 两个整数,N 和K 。

【输出】 一个整数,农夫抓到牛所要花费的最小分钟数。

【输入样例】 5 17 【输出样例】 4





```cpp
#include<bits/stdc++.h> 
using namespace std;
struct node{
	int x;
	int time;
};
node q[100000];
int qx,zx;
int v[100000];
int h,t;
int dx[3]={1,-1,0};
void bfs(){
	q[t].x=qx;
	q[t].time=0;
	v[qx]=1;
	t++;
	while(h<t){
		for(int i=0;i<3;i++){
			int xx=q[h].x+dx[i];
			if(i==2){
				xx+=xx;
			}
			if(xx>=qx&&v[xx]==0){
				v[xx]=1;
				q[t].x=xx;
				q[t].time=q[h].time+1;
				if(xx==zx){
					cout<<q[t].time;
					return ;
				}
				t++;
			}
		}
		h++;
	}
}
int main(){
	cin>>qx>>zx;
	bfs();
	return 0;
}
2023/8/30 15:37
加载中...