Luogu P1588 丟失的牛

2022-05-16 11:27:12 字數 922 閱讀 3661

本題抽象一下就是從乙個點出發,然後經過座標x2或+1或-1到另乙個點。顯然這就是乙個搜尋題,而且顯然可以看出步數最多就是兩個點座標之差。但是資料範圍105,直接暴搜肯定要麼mle要麼tle,肯定不行,一定要加上優化。

我們注意到座標的範圍是(0,105],那麼如果乙個點擴充套件到了這個範圍之外顯然就不可能得到解了,因此直接剪枝。同時我們用bfs搜尋,顯然第一次搜到某個點那一定是到這個點的最少步數,之後再到達這個點就沒必要再搜一遍了,有些記憶化的思想。

所以最後一頓剪枝操作就可以通過本題了,模擬的時候就因為剪枝條件少了乙個導致mleqwq。

#include#include

#include

#include

#include

using

namespace

std;

int d[100010

];bool check(int

x)int

s,t;

struct

qwqtop;

void

bfs()

); d[s] = 1

;

while

(q.size())

);d[top.x + 1] = top.step + 1

; }

if(check(top.x - 1

)) );

d[top.x - 1] = top.step + 1

; }

if(check(top.x << 1

)) );

d[top.x

<< 1] = top.step + 1

; }

}}int

main()

return0;

}

luogu1588 丟失的牛

時空限制 1000ms 128mb fj丟失了他的一頭牛,他決定追回他的牛。已知fj和牛在一條直線上,初始位置分別為x和y,假定牛在原地不動。fj的行走方式很特別 他每一次可以前進一步 後退一步或者直接走到2 x的位置。計算他至少需要幾步追上他的牛。輸入格式 第一行為乙個整數t 10 表示資料組數 ...

洛谷 P1588 丟失的牛

傳送門 洛谷 p1588 丟失的牛 懶得再解釋了,簡單bfs,下面是蒟蒻 include 萬能頭 using namespace std int i,j,k,m,n,f 200005 queue q 佇列 int main for i 0 i m 2 i 避免 2後的 f i 1 記錄沒有到達過 q...

P1588 丟失的牛 AC於2018 9 16

fj丟失了他的一頭牛,他決定追回他的牛。已知fj和牛在一條直線上,初始位置分別為x和y,假定牛在原地不動。fj的行走方式很特別 他每一次可以前進一步 後退一步或者直接走到2 x的位置。計算他至少需要幾步追上他的牛。輸入格式 第一行為乙個整數t 10 表示資料組數 接下來每行包含乙個兩個正整數x和y ...