資料結構 樹狀陣列 定義和模板

2021-10-02 06:05:34 字數 473 閱讀 8160

草稿

我全忘了之後重新複習 哪些對我有點醒作用

樹狀陣列c[i]的含義: c[i]覆蓋的長度是lowbit(i),儲存前lowbit(i)個整數之和。

lowbit(x)是取x的二進位制的最右邊的1和它右邊所有的0

例如 lowbit(8) = 8d = 1000b

樹形圖區間和查詢 迴圈 從大到小 [x, 0) >0 i-=lowbit(i) 減去最右邊的1 從右至左(16--->1)不斷定位x的二進位制最右邊的1的過程

單點修改(某個數加上x)  如果lowbit(a)所以一定有lowbit(a)>=lowbit(x)

如果lowbit(x)=a,

最小的a就是lowbit(x)....

區間修改,單點查詢

樹狀陣列定義:c[i]覆蓋的長度不變,仍是lowbit(i),這段區間每個數當前被加了多少

單點查詢:

區間修改:

資料結構 樹狀陣列

區間資訊的維護與查詢專題 樹狀陣列 1.問題 動態連續和查詢問題。給定乙個n個元素的陣列a1,a2,an,你的任務是設計乙個資料結構,支援以下兩種操作。add x,d 操作 讓ax增加d.query l,r 計算al al 1 ar.對普通陣列進行 一次修改或 特定區間 求和,時間複雜度為o n n...

資料結構 樹狀陣列

原陣列 字首和 範圍和 原陣列更改陣列元素在求和效率較低,引入樹狀陣列 假設原陣列a 樹狀陣列c 樹狀陣列 的三種操作 1.lowbit 子葉數 二進位制最低位的1代表多少 實現 int lowbit int n 求 lowbit x returnx x 2.update a i k 假設a i 是...

資料結構 樹狀陣列

講到了線段樹,那就順便講講樹狀陣列吧。假設乙個長度為 12 的線段樹,構建結果如下 在區間求和問題上,在葉子節點,顯然劃線部分的值可以由父親節點 左端葉子節點得到。那麼,這部分資訊就是冗餘的,沒有儲存的必要。同理,可以推導出所有冗餘的部分如下 那麼,去除冗餘部分後的結果如下 給每乙個節點乙個編號。我...