樹狀陣列模板

2021-10-02 23:24:54 字數 730 閱讀 3943

1.lowbit函式

int

lowbit

(int i)

return i&

(-i)

;

lowbit函式的作用呢,就是返回二進位制數的最後一位1,在返回時附帶後面的0,即把二進位制的高位1全部清空,只留下最低位的1。舉個小栗子吧,10的二進位制是1010,則lowbit(1010)=0010,乙個數加乙個負號即把這個數的二進位製取反加一。那麼-10的二進位制就是0110,然後1010&0110即0010啦

2.lowbit函式對樹狀陣列所起的作用

把lowbit函式的值作為位置儲存的區域和,即可覆蓋全部位置,即每數字管理所屬的一段區間,這和線段樹是一樣的。

3.模板**:

#include

using

namespace std;

int tree[

100001];

int n =

100005

;//根據lowbit函式進行遍歷,保證樹狀陣列的更新,覆蓋所有位置

void

update

(int index,

int n)

}//利用lowbit函式進行遞減,一直減到1,從而求出字首和

intquery_sum

(int n)

return ans;

}void

main()

樹狀陣列模板

假設有一列數 1 i n 支援如下兩種操作 1.將ai的值加d。2.輸出ai ai 1 aj 1 i j n 樹狀陣列是一種特殊的資料結構,這種資料結構的時空複雜度和線段樹相似,但是它的係數要小得多 hdu 1166 敵兵布陣 題目 a國在海岸線沿直線布置了n個工兵營地。由於採取了某種先進的監測手段...

樹狀陣列模板

已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數數加上x 2.求出某乙個數的和 這種水水的樹狀陣列,博主就不做介紹,直接上 希望大家可以多多捧場!include include include include include include include include include ...

樹狀陣列模板

樹狀陣列 binary indexed tree bit fenwick tree 是乙個查詢和修改複雜度都為log n 的資料結構。主要用於查詢任意兩位之間的所有元素之和,但是每次只能修改乙個元素的值 經過簡單修改可以在log n 的複雜度下進行範圍修改,但是這時只能查詢其中乙個元素的值。一,改點...