小蓁是一個喜歡思考的學生,典型的理科女,她的教室在四樓,在每天上下樓梯時,她思考出一個爬樓梯的邏輯遊戲問題,每天爬樓梯時腦海裡就在執行這個遊戲:
每一步可以往上走 1 階或 2 階,開始位置在第 0 階,從第一階開始每階都有一個數字,踩在第 i 階,分數就要扣第 i 階的數字,請問當爬到第 n 階的最少的扣分是多少。
小蓁的同學也就是你本人覺得這個遊戲實在太簡單了,因此你輕鬆地使用了 DP 的程式技巧就幫她解決了這個問題,但是你在解決這個問題的過程根本無法體會到 DP 的精華,因此你幫這個遊戲做了以下變更,讓遊戲的內容更加有趣。
• 每一步不再只是可以往上走 1 階或 2 階,然而每一個階梯都會限制到達此階時,上一步至多可以走的階數。
• 每一個階梯現在可能為扣分或加分,加分會以正數表示,扣分會以負數表示,可能有 0。
現在請你求出正負相抵後,爬到第 n 階的最多的加分是多少,如果是扣分請以負數表示。
第一行是正整數 n,代表階梯的總數。
第二行有 n 個正整數 ai,依序代表第 1 階開始的分數,數字間以空白隔開。
第三行有 n 個正整數 ki,ki 代表跳至第 i 階的前一步至多可以有幾階,亦即你只能從第 i - ki 階以上的階層到達第 i 階。
• 1 ≤ ki ≤ i
• -109 ≤ ai ≤ 109
輸出走到第 n 階的最大得分。
#test input 1: 6 2 -1 3 -5 2 1 1 2 2 3 2 4 #test input 2: 6 -3 -3 -3 -3 -3 -3 1 2 1 2 2 1
#test output 1: 8 #test output 2: -12
dp, data structures (CF 1600)
10% 的測資滿足 1 ≤ n ≤ 5000。
40% 的測資滿足 1 ≤ n ≤ 300000, ki+1 ≤ ki+1,1 ≤ i ≤ n-1。
50% 的測資滿足 1 ≤ n ≤ 300000。
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」 |