樹狀陣列總結二

2021-06-02 11:15:02 字數 3669 閱讀 9337

cn = a(n – 2^k + 1) + … + an ;

此處的k為n的二進位制形式末尾0的個數,可以利用lowbit()函式找出k

注意:下標不能從0開始:

當i = 0,0 + lowbit(0) = 0,會造成死迴圈!

主要三個函式:

+ expand source(雙擊可全選**)

樹狀陣列功能:

1、單點更新,區間求和(第一類)//hdu 1166 敵兵布陣

2、區間更新,單點求值(第二類)//hdu 1556 color the ball

3 、逆序數的應用,可以求左邊小於它的數,右邊大於它的數,反過來可以求

題目:hdu 1166 敵兵布陣 ,樹狀陣列模板題,單點更新,區間求和

+ expand source(雙擊可全選**)

hdu 1556 color the ball 區間更新,單點求值

+ expand source(雙擊可全選**)

hdu 1541 stars            樹狀陣列應用

+ expand source(雙擊可全選**)

hdu 1892 see you~   簡單二維樹狀陣列

+ expand source(雙擊可全選**)

hdu 2642 stars     二維樹狀陣列

+ expand source(雙擊可全選**)

hdu 3584 cube  三維樹狀陣列,只有0,1的區間更新,單點求值

+ expand source(雙擊可全選**)

hdu  2689 sort it    求逆序對

+ expand source(雙擊可全選**)

hdu  2838  cow sorting      逆序數的應用

+ expand source(雙擊可全選**)

hdu 1394  minimum inversion number            逆序對應用

+ expand source(雙擊可全選**)

hdu   2688    rotate        求正序數,然後模擬

+ expand source(雙擊可全選**)

hdu   2852    kiki』s k-number          求大於a的第k大元素,可以用二分列舉

+ expand source(雙擊可全選**)

hdu   2227    find the nondecreasing subsequences        利用樹狀陣列求遞增序列個數

+ expand source(雙擊可全選**)

hdu    3450       counting sequence       類似2227

+ expand source(雙擊可全選**)

hdu   2492    ping pong      求長度為3的順序序列有多少個

+ expand source(雙擊可全選**)

cn = a(n – 2^k + 1) + … + an ;

此處的k為n的二進位制形式末尾0的個數,可以利用lowbit()函式找出k

注意:下標不能從0開始:

當i = 0,0 + lowbit(0) = 0,會造成死迴圈!

主要三個函式:

+ expand source(雙擊可全選**)

樹狀陣列功能:

1、單點更新,區間求和(第一類)//hdu 1166 敵兵布陣

2、區間更新,單點求值(第二類)//hdu 1556 color the ball

3 、逆序數的應用,可以求左邊小於它的數,右邊大於它的數,反過來可以求

題目:hdu 1166 敵兵布陣 ,樹狀陣列模板題,單點更新,區間求和

+ expand source(雙擊可全選**)

hdu 1556 color the ball 區間更新,單點求值

+ expand source(雙擊可全選**)

hdu 1541 stars            樹狀陣列應用

+ expand source(雙擊可全選**)

hdu 1892 see you~   簡單二維樹狀陣列

+ expand source(雙擊可全選**)

hdu 2642 stars     二維樹狀陣列

+ expand source(雙擊可全選**)

hdu 3584 cube  三維樹狀陣列,只有0,1的區間更新,單點求值

+ expand source(雙擊可全選**)

hdu  2689 sort it    求逆序對

+ expand source(雙擊可全選**)

hdu  2838  cow sorting      逆序數的應用

+ expand source(雙擊可全選**)

hdu 1394  minimum inversion number            逆序對應用

+ expand source(雙擊可全選**)

hdu   2688    rotate        求正序數,然後模擬

+ expand source(雙擊可全選**)

hdu   2852    kiki』s k-number          求大於a的第k大元素,可以用二分列舉

+ expand source(雙擊可全選**)

hdu   2227    find the nondecreasing subsequences        利用樹狀陣列求遞增序列個數

+ expand source(雙擊可全選**)

hdu    3450       counting sequence       類似2227

+ expand source(雙擊可全選**)

hdu   2492    ping pong      求長度為3的順序序列有多少個

+ expand source(雙擊可全選**)

樹狀陣列總結

樹狀陣列的基本知識已經被各種大牛和菜鳥講到爛了,我就不多說了,下面給出基本操作的 假定原陣列為a 1.n 樹狀陣列b 1.n 考慮靈活性的需要,使用int a傳陣列。define lowbit x x x int sum int a,int x void update int a,int x,int...

樹狀陣列總結

樹狀陣列是對乙個陣列改變某個元素和求和比較實用的資料結構。兩中操作都是o logn 在解題過程中,我們有時需要維護乙個陣列的字首和s i a 1 a 2 a i 但是不難發現,如果我們修改了任意乙個a i s i s i 1 s n 都會發生變化。可以說,每次修改a i 後,調整字首和s在最壞情況下...

樹狀陣列總結

今天學習了一下樹狀陣列,做乙個簡單總結。樹狀陣列可分為兩種操作,1 修改單個點,統計區間和 一般為 向上修改 update1 向下統計 sum1 2 修改區間,統計單個點 一般為向下修改 update2 向上統計 sum2 主要模板如下 int c n int lowbit int x 用於確定區間...