AcWing 730 機械人跳躍問題

2022-06-07 23:09:11 字數 930 閱讀 6625

原題鏈結

考察:二分 or 遞推

思路一:

二分初始能量值,check函式檢查即可.要注意的是每次e都+=e-h,也就是 e = 2*e-h. 2100000不管用什麼資料型別都會爆,因此必須考慮別的做法:此時思路有二:

高精度,但是高精很慢,盡量避免高精

避開運算,在e一定滿足條件就return 1

可以發現當e = hmax時,它的再次運算一定》hmax所以在check途中檢查hmax即可.

1 #include 2

using

namespace

std;

3const

int n = 100010;4

inth[n],n,maxn;

5bool check(int

mid)614

return

true;15

}16intmain()

1727 printf("

%d\n

",r);

28return0;

29 }

二分做法

思路二:

可以發現跳躍後機械人的能量為2*e-h.能量要求最少,就是達到最後乙個建築時e = 0,此時可以遞推回去,但是注意h+e後不一定恰好是2的倍數.此時需要將(h+e後)/2+1.

具體可參考樣例三.

1 #include 2

using

namespace

std;

3const

int n = 100010;4

inth[n],n;

5int

main()

616 printf("

%d\n

",ans);

17return0;

18 }

AcWing 730 機械人跳躍問題

acwing 730.機械人跳躍問題 機械人正在玩乙個古老的基於dos的遊戲。遊戲中有n 1座建築 從0到n編號,從左到右排列。編號為0的建築高度為0個單位,編號為 i 的建築高度為h i 個單位。起初,機械人在編號為0的建築處。每一步,它跳到下乙個 右邊 建築。假設機械人在第k個建築,且它現在的能...

730 機械人跳躍問題

題解 這個題最重要的一點就是 用初始值丈量能不能行時,一定要及時停止,不然連long long都給你爆了。二分的兩個邊界 l min 1 2 r max 原因是 x x min 0 x max 0 沒意義 所以 x max ac include include include include usi...

730 機械人跳躍問題

機械人正在玩乙個古老的基於 dos 的遊戲。遊戲中有 n 1 座建築 從 0 到 n 編號,從左到右排列。編號為 0 的建築高度為 0 個單位,編號為 i 的建築高度為 h i 個單位。起初,機械人在編號為 0 的建築處。每一步,它跳到下乙個 右邊 建築。假設機械人在第 k 個建築,且它現在的能量值...