a362: Q-7-5. 闖關路線 (APCS201910)
標籤 :
通過比率 : 20人/23人 ( 87% ) [非即時]
評分方式:
Tolerant

最近更新 : 2023-05-31 16:49

內容

某個闖關遊戲上有一隻神奇寶貝與兩個可控制左右移動的按鍵。神奇寶貝被安置在僅可左右移動的滑軌上。滑軌分成n個位置,由左到右分別以0 ~ n – 1表示。當遊戲開始時,神奇寶貝從位置0開始,遊戲的資訊包含P、L與R三個數字,其中P表示所須移至的目標位置,L與R則分別表示每按一次左鍵或右鍵後,會往左或往右移動的格子數。此外,每一個位置x都對應一個瞬間移動位置S(x);每一次按鍵後,神奇寶貝會先依據按鍵往左或右移動到某個位置x,接著瞬間移動至S(x)。某些點的瞬間移動位置等同原地點,也就是S(x) = x,這些點稱為停留點。開始與目標位置都一定是停留點;此外,每個點的瞬間移動位置都一定是停留點(除非超出界外),也就是不會發生連續瞬間移動的情形。
遊戲的目標是以最少的按鍵數操作神奇寶貝由開始位置到達目標位置,此外,在移動過程中不可以超過滑軌的範圍[0, n – 1],否則算闖關失敗;某些點的瞬間移動位置也可能會超出滑軌的範圍,移動到這些點也會導致闖關失敗。

輸入說明

輸入有兩行,第一行有4個數字,第1個為n,第2個為目標位置P,第3個為L,第4個為R,後三個數字皆為小於n之正整數,且2 ≤ n ≤ 1e6。第二行有n個整數,依序是各點的瞬間移動位置S(0), S(1), …, S(n – 1),這些數字是絕對值不超過1e8的整數。

輸出說明

輸出到達目標位置所需的最少按鍵數,如果無法到達目標位置,則輸出 –1

範例輸入 #1
5 3 1 2
0 3 2 3 5
範例輸出 #1
2
範例輸入 #2
10 8 2 3
0 5 2 3 4 5 6 6 8 9
範例輸出 #2
3
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (20%): 1.0s , <10M
公開 測資點#1 (20%): 1.0s , <1K
公開 測資點#2 (20%): 1.0s , <1M
公開 測資點#3 (20%): 1.0s , <10M
公開 測資點#4 (20%): 1.0s , <10M
提示 :

範例一說明:位置區間為[0,4],目標位置為3,左鍵往左移動1格,右鍵往右移動2格。到目標位置最少的按鍵數是2次:從起點0第一次按下右鍵會到達位置2,因為S(2)=2,因此停留在2,第二次按下左鍵,會往左移一格到達1,因為S(1)=3,所以瞬間移動到3,由於3是目標位置,所以就闖關成功了。
範例二說明:位置區間為[0,9],目標位置為8,按一次左鍵往左移動2格,按一次右鍵往右移動3格。到達目標位置的最少按鍵數是3次,其經過的路徑是: 0,按右鍵 3 (停留在3),按左鍵 1 (瞬間移動到5),按右鍵 8 (停留在8,到達)。

標籤:
出處:
AP325 [管理者:
haha (大學長)
]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」