看到題目最直覺的想法
對於每次冒險都用迴圈從 l 跑到 r 去計算收益
時間複雜度是O(NQ)理論上會TLE但測資偏水
就當做你拿了個TLE
那怎麼辦,一定要每次都跑迴圈嗎?
注意到答案只需要在所有冒險結束後計算
所以可以在每個冒險在頭尾打個標記
最後在做前綴和,像這樣 :
l r v
1 3 4
2 5 2
原陣列 : 0 0 0 0 0 0 0
頭尾打上標記 : 0 4 2 0 -4 0 -2 0 (是在頭 + 然後在 [尾+1]的位置 - )
最後做一遍前綴和 : 0 4 6 6 2 2 0 0
這樣就完美的完成區間加值了
這個技巧是 差分 時間複雜度是O(N+Q)
就能AC這題了