樹狀數組總結二

樹狀數組小結

分類:算法學習 | 作者:酷~行天下 | 發表於2011/07/10 1條評論 513 views

最近做了HDU幾道樹狀數組的題,小小總結一下……  
樹狀數組是一個查詢和修改複雜度都爲log(n)的數據結構,假設數組a[1..n],那麼查詢a[1]+…+a[n]的時間是log級別的,而且是一個在線的數據結構,支持隨時修改某個元素的值,複雜度也爲log級別。 


Cn = A(n – 2^k + 1) + … + An ;

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

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

當i = 0,0 + Lowbit(0) = 0,會造成死循環!

主要三個函數:

樹狀數組功能:

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

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

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

                              

題目:

HDU 1166 敵兵佈陣 ,樹狀數組模板題,單點更新,區間求和

                              
HDU 1556 Color the ball 區間更新,單點求值

                              
HDU 1541 Stars            樹狀數組應用

                              
HDU 1892 See you~   簡單二維樹狀數組

                              
HDU 2642 Stars     二維樹狀數組

                              
HDU 3584 Cube  三維樹狀數組,只有0,1的區間更新,單點求值

                              
HDU  2689 Sort it    求逆序對

                              
HDU  2838  Cow Sorting      逆序數的應用

                              
HDU 1394  Minimum Inversion Number            逆序對應用

                              
HDU   2688    Rotate        求正序數,然後模擬

                              
HDU   2852    KiKi’s K-Number          求大於a的第k大元素,可以用二分枚舉

                              
HDU   2227    Find the nondecreasing subsequences        利用樹狀數組求遞增序列個數

                              
HDU    3450       Counting Sequence       類似2227

                              
HDU   2492    Ping Pong      求長度爲3的順序序列有多少個

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章