#125: 題解


211096@stu.cchs.chc.edu.tw (唐狗針)

學校 : 彰化縣精誠中學
編號 : 872
來源 : [61.223.79.98]
最後登入時間 :
2024-12-01 20:39:24
a495. $\text{pC}$ 班尼冒險 $\text{(Alive)}$ | From: [61.223.113.83] | 發表日期 : 2024-11-04 22:42

看到題目最直覺的想法

對於每次冒險都用迴圈從 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這題了

 
ZeroJudge Forum