原題鏈結
考察:二分 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 2using
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 個建築,且它現在的能量值...