Problem
物理加熱實驗,每個粒子在一個長棒上,加熱長棒的一端,粒子水平左右移動速度為 1,當距離加熱粒子小於等於 D 時,加熱狀態就會被傳遞。
給定每一個粒子的位置,現在從座標 0 的位置進行加熱,請問所有粒子都呈現加熱狀態需要幾秒。
Sample Input
|
|
Sample Output
|
|
Solution
貪心盡可能讓粒子往原點移動,維護一個當前使用時間 t,前 i 個粒子的傳遞時間最短下,最右側的粒子能距離原點最遠為何。
加入下一個粒子時 (不考慮在 t 秒內的移動),若距離大於 D,且藉由 t 時間內的移動仍然無法接近到加熱粒子 D 以內,則表示需要額外時間來接近加熱粒子 (加熱粒子與未加熱粒子彼此靠近)。反之,則在 t 秒內慢慢移動到加熱粒子恰好能傳遞的距離上 (類似接力賽跑的接棒過程)。如果下一個粒子距離小於 D,表示在 t 秒內可以進可能遠離到恰好接棒的位置。
|
|