模板 一維樹狀陣列

2022-06-08 21:21:09 字數 945 閱讀 1232

單點修改,區間求和

#define lowbit(x) x&(-x)

const int maxn=100010;

int n,bit[2*maxn];

int query(int x)

return s;

}void change(int x,int v)

}

區間修改,單點查詢

將原陣列儲存成差分陣列,根據差分的性質,在區間[l,r]上同時加上x可以處理成:

\(change(l,x)\)

\(change(r+1,-x)\)

查詢下標為i的元素值可以處理成:

\(query(i)\)

區間修改,區間求和

設定兩個bit,bit和bit2

在區間[l,r]上同時加上x可以處理成:

\(change(bit,l,x)\)

\(change(bit,r+1,-x)\)

\(change(bit2,l,k*l)\)

\(change(bit2,r+1,-k*(r+1))\)

區間[l,r]的求和可以處理成:

\(query(bit,r)*(r+1)-query(bit2,r)-(query(bit,l-1)*l-query(bit2,l-1))\)

const int maxn=100010;

ll bit[maxn],bit2[maxn];

void add(ll *t,int x,ll v)

ll sum(ll *t,int x)

void update(int l,int r,ll k)

ll getsum(int x)

ll query(int l,int r)

《一維樹狀陣列》模板

problem description c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的...

樹狀陣列模板(一維的)

經典應用 1 士兵殺敵 1 樹狀陣列模板 input 5 21 2 3 4 5 1 32 4 output 69 include include using namespace std int c 1000006 儲存樹狀陣列 int n 元素個數 即節點個數 下標從1開始 求最小冪2的k次冪 in...

(一維 二維)樹狀陣列模板

一維或二維的區間修改都用到了差分的思想 詳細講解 1.單點修改 區間查詢 int lowbit int x void add int x,int v 給x位置加上v int ask int x 求字首和 return ans int range ask int l,int r 2.區間修改 單點查詢...