有一個資料結構叫BIT(Binary Indexed Tree)或稱Fenwick Tree,中文是樹狀數組。一般情況下,BIT能單點改值、區間查詢。而此題要求區間改值、區間查詢,便需要改變一下原本的BIT。原理及實作可以自行去查詢 OuOb
以下是我用BIT實作的結果
最近偶然點開這題,想說用線段樹解解看,發現比BIT快很多
但這不太可能,因為線段樹是用遞迴,常數很大,相較之下BIT都是迴圈,理論上會快很多
結果發現我之前BIT那份程式碼沒有I/O優化ww,開了之後果然BIT快了許多,記憶體用量也少很多
線段數 1.1s, 36.1MB
BIT 0.4s, 7.9MB