機械人跳躍問題

2021-10-02 07:45:11 字數 1195 閱讀 6806

機械人正在玩乙個古老的基於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:

53 4 3 2 4

輸出樣例1:

4輸入樣例2:

34 4 4

輸出樣例2:

4輸入樣例3:

31 6 4

輸出樣例3:

3

題意為有乙個機械人,初始能量為e,然後有k個建築,現在機械人要跳過去這些建築,並且跳的時候他的能量值會發生變化,但是這中間不能能量值出現負數的情況,問最初的能量值e最少是多少

如果機器人選現在有的能量為e,如果h(k+1)>e,則e-(h(k+1)-e),整理得2e-h(k+1);如果h(k+1)要注意要加上if(x>1e5) return 1;這一句話,如果e是1e5,然後所有的h[i]都是1,long long的話也會超的,因為1≤n,h(i)≤105,所以在跳的過程中,如果能量值為1e5了,因為每次都是2e-h(k+1),所以減去h(k+1)也是大於1e5的,所以,再跳下去也是不會出現e<0的情況的

#include

#include

using

namespace std;

int aa[

123456

],n;

intcheck

(int x)

return1;

}int

main()

cout

}

機械人跳躍問題

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

機械人跳躍問題

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

機械人跳躍問題

題目 這題是一道求最小值的題,一般求最小值的題都可以考慮用二分來做 y總 根據題目可以看出無論是向上還是向下跳躍能量變化都是一樣的 設能量為e,則每跳一層能量的變化為e 2 e h i 其中h i 是每層的高度,當e 0時就可以捨棄這個高度了,因為不滿足要求,當e 1e5的時候可以直接判斷當前高度是...