#41472: C++詳解-Map


toseanlin@gmail.com (Dr. SeanXD)

學校 : 康橋雙語學校
編號 : 158065
來源 : [24.147.249.5]
最後登入時間 :
2024-10-28 09:54:40
n686. pA. 訊號傳遞 -- 113學年度hgsh校內賽 | From: [220.136.106.229] | 發表日期 : 2024-07-30 09:40

將每一個基地台的下一個基地台位置紀錄下來,可以使用陣列的方式來紀錄,這邊命名叫 next。另外,可以使用 map<int, int> 來紀錄每一個基地台可以跑多遠,這邊命名叫 MAP。

跑一個 For迴圈 從 0 到 N-2,並且宣告兩個變數 pos = 0、step = MAP[0],分別代表目前的位置和還有幾步可以走。如果 pos + step >= next[i],也就是當目前位置+剩餘步數可以抵達下一個基地台時,將 pos 更新成 next[i],並且將 step -= next[i] – pos。之後要來比對是目前剩餘的步數 step 比較多,還是 MAP[next[i]] 也就是新基地台提供的步數比較多,將多者設定為新的 step。如果無法抵達下一個基地台,則將 For迴圈 Break 掉。

輸出的時候因為可能會有剩餘的步數,所以是輸出 pos + step。

 

範例程式碼

 
ZeroJudge Forum