求谷内有没有类似的这题(据说是noip提高的
  • 板块灌水区
  • 楼主lucy2012
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/4/20 11:57
  • 上次更新2024/4/20 14:24:34
查看原帖
求谷内有没有类似的这题(据说是noip提高的
1252442
lucy2012楼主2024/4/20 11:57

农夫知道一头牛的位置,想要抓住它,农夫起始位于点N(0<=N<=100000)N(0<=N<=100000),牛起始位于点K(0<=K<=100000)K(0<=K<=100000),农夫有两种移动方法

1.从XX移动到X−1X-1或X+1X+1,每次花费一分钟;

2.移动到2∗X2*X,每次花费一分钟;

假设牛不知道农夫找它,农夫最少花费几分钟?

输入

XX和NN

输出

最短距离

样例

输入

5 17

输出

4

2.我的代码为什么戳了?输出为0(玄关)

#include<bits/stdc++.h>
using namespace std;
int n,k,sum=0,vis[100010]; 
struct node{
	int x,step;
}q[100010];
void bfs(int x,int y){
	int head=1,tail=1;
	q[tail].x=x;
	q[tail].step=0;
	tail++;
	vis[x]=1;
	while(head<tail){
		int x1=q[head].x;
		int step1=q[head].step;
		if(x1==x){
			cout<<step1;
			return;
		}
		for(int i=1;i<=3;i++){
			int xx;
			if(i==1) xx=x1+1;
			if(i==2) xx=x1-1;
			if(i==3) xx=2*x1;
			if(xx>=0&&xx<100000&&!vis[xx]){
				q[tail].x=xx;
				q[tail].step=step1+1;
				tail++;
				vis[xx]=1;
			}
		}
		head++;
	}
}
int main(){
    cin>>n>>k;
    bfs(n,k);
    return 0;
}
2024/4/20 11:57
加载中...