AcWing 730 機械人跳躍問題

2021-10-20 04:11:04 字數 1703 閱讀 2155

acwing 730. 機械人跳躍問題

機械人正在玩乙個古老的基於dos的遊戲。

遊戲中有n+1座建築——從0到n編號,從左到右排列。

編號為0的建築高度為0個單位,編號為 i 的建築高度為h(i)個單位。

起初,機械人在編號為0的建築處。

每一步,它跳到下乙個(右邊)建築。

假設機械人在第k個建築,且它現在的能量值是e,下一步它將跳到第k+1個建築。

如果h(k+1)>e,那麼機械人就失去h(k+1)-e的能量值,否則它將得到e-h(k+1)的能量值。

遊戲目標是到達第n個建築,在這個過程中能量值不能為負數個單位。

現在的問題是機械人至少以多少能量值開始遊戲,才可以保證成功完成遊戲?

輸入格式

第一行輸入整數n。

第二行是n個空格分隔的整數,h(1),h(2),…,h(n)代表建築物的高度。

輸出格式

輸出乙個整數,表示所需的最少單位的初始能量值上取整後的結果。

資料範圍

1≤n,h(i)≤105,

輸入樣例1:

534324

輸出樣例1:

4
輸入樣例2:

344

4

輸出樣例2:

4
輸入樣例3:

316

4

輸出樣例3:

3
這道題還是比較簡單的,我觀察到這好像是乙個遞增序列,二分法就直接解決了,我寫了第一代版本,

這個測試樣例沒過,我仔細觀察了一下,原來是爆int了於是我改進了一下check函式。

#include

using

namespace std;

const

int n=

1e5+

10,mod=

1e9+7;

int h[n]

;int n;

bool

check

(int m)

return

true;}

intmain

(void

) cout<

}

成功a

AcWing 730 機械人跳躍問題

原題鏈結 考察 二分 or 遞推 思路一 二分初始能量值,check函式檢查即可.要注意的是每次e都 e h,也就是 e 2 e h.2100000不管用什麼資料型別都會爆,因此必須考慮別的做法 此時思路有二 高精度,但是高精很慢,盡量避免高精 避開運算,在e一定滿足條件就return 1 可以發現...

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 個建築,且它現在的能量值...