Circular Electric Vehicle Trip


Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 64M

Authors:
Problem type
Allowed languages
Java 19, Java 8

題目說明

在台灣,有 n 個充電站環繞整個島嶼形成一個圓圈,編號為 0 到 n-1。每個充電站 i 都提供一定程度的供電量 energy[i]。你駕駛一台最新款的電動車,這台車擁有無限容量的電池。

從地圖上得知,你的車從第 i 個充電站移動到下一個充電站(即第 i+1 個站,若 i 為 n-1 則下一個站是 0)時,需要耗費 cost[i] 的電力。

在旅程開始時,你的電池是完全沒電的。你必須選擇其中一個充電站作為起點,並嘗試依照順時針方向(0 -> 1 -> 2 ... -> n-1 -> 0)繞島一圈回到原起點。

請編寫一個程式,判斷是否可以從某個充電站出發並順利完成環島。你必須回傳該充電站的編號(Index);若無論從哪個站出發都無法完成旅程,請回傳 -1。

本題保證如果存在解,則該解是唯一的。

除了輸入資料之外,此題只需要用一個單層迴圈。

輸入值的格式

輸入為一系列的正整數,格式如下: n energy[0] energy[1] ... energy[n-1] cost[0] cost[1] ... cost[n-1]

  1. 第一個整數 n 代表充電站的總數。

  2. 接下來的 n 個整數代表每個站點提供的電力 energy[i]。

  3. 最後的 n 個整數代表從站點 i 到下一個站點所需的電力 cost[i]。

輸出值的格式

輸出一個整數,代表起點站的編號(Index,從 0 開始)。若無解則輸出 -1。

各種需要注意的邊界條件

  • 單一站點 (n=1):當島上只有一個充電站時,只要該站提供的電力大於或等於前往自己的成本(繞一圈回到原地),即可完成。

  • 電量剛好歸零:在行進過程中,剩餘電量可以剛好等於 0,只要不變為負數,都可以繼續前進。

sample input1

5 1 2 3 4 5 3 4 5 1 2

sample output1

3

解釋:

若從索引 3 出發(電力 4,成本 1):

剩餘 4-1 = 3。

到達站 4:加上電力 5,總共 3+5 = 8,扣掉成本 2,剩餘 6。

到達站 0:加上電力 1,總共 6+1 = 7,扣掉成本 3,剩餘 4。

到達站 1:加上電力 2,總共 4+2 = 6,扣掉成本 4,剩餘 2。

到達站 2:加上電力 3,總共 2+3 = 5,扣掉成本 5,剩餘 0。

回到起點 3,成功。

sample input2

3 2 3 4 3 4 3

sample output2

-1

Comments

There are no comments at the moment.