1253 抓住那頭牛

2021-10-09 03:05:32 字數 868 閱讀 6380

【題目描述】

農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n

(0≤n≤100000

),牛位於點k

(0≤k≤100000

)。農夫有兩種移動方式:

1、從x移動到x−1或x+

1,每次移動花費一分鐘

2、從x移動到2×x,每次移動花費一分鐘

假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多少時間才能抓住牛?

【輸入】

兩個整數,n和k。

【輸出】

乙個整數,農夫抓到牛所要花費的最小分鐘數。

【輸入樣例】517

【輸出樣例】

4

這是一道廣搜題,一開始就沒有什麼思路。後來畫了乙個樹狀圖,從起點出發,畫出能到達的相鄰點,一看這個圖,瞬間就明白了用廣搜來做(從起點2→終點7的圖)。

**如下:

#include

using

namespace std;

int n, a, b, vis[

100005];

struct node

node

(int xx,

int mmin)};

boolin(

int x)

void

bfs(

int x)

for(

int i=

0; i<

3; i++)}

}}intmain()

1253 抓住那頭牛

農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x 移動到x 1或x 1 每次移動花費一分鐘 2 從x移動到2 x 每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多...

1253 抓住那頭牛

1253 抓住那頭牛 時間限制 1000 ms 記憶體限制 65536 kb 提交數 8246 通過數 3066 題目描述 農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x移動到x 1或x ...

1253 抓住那頭牛

1 include2 using namespace std 3int n,k 4struct node 7 node que 100010 結構體陣列表示佇列 8int f,r 定義隊首和隊尾 9bool vis 100010 數軸位置是否被訪問過 10void move int nx,int f...