樹狀陣列和ST表

2021-08-26 14:54:21 字數 784 閱讀 2965

binary index tree 用來解決動態字首和問題的資料結構。

樹狀陣列或者二叉索引樹也稱作binary indexed tree,又叫做fenwick樹;它的查詢和修改的時間複雜度都是log(n),空間複雜度則為o(n),這是因為樹狀陣列通過將線性結構轉化成樹狀結構,從而進行跳躍式掃瞄。通常使用在高效的計算數列的字首和,區間和。

1101 = 13我們要詢問13這個位置的字首和。依次減去1即可。

1101 d[13]      有2^0=1個數

1100 d[12]       有2^2=4個數

1000 d[8]         有2^3=8個數

將上述3個加起來即可完成。

lowbit()函式:

lowbit(int x)

return x&(-x);

線段樹 樹狀陣列 ST表 模板

區間修改 區間求和 logn const int n 1e5 5 int a n namespace seg c n 2 void pushdown int k,int l,int r void pushup int k l,r是總區間 left,right是查詢區間 long long query...

st表與樹狀陣列求RMQ問題

st表其實就是運用dp思想解決rmq問題 你想解決這個區間長度 那我開乙個二維陣列dp i j 長度為2 j 代表區間 i,i 2 j 1 那麼顯而易見 我們可以繼續再分 分的基礎是什麼呢 就是 i,2 j 1 1 2 j 1 1,i 2 j 1 同理是不是最後得到什麼?沒錯 就是j 0時候 那麼長...

稀疏表 樹狀陣列和線段樹

區間問題,例如區間求和 區間最值,有很多資料結構可以選擇。稀疏表 樹狀陣列和線段樹就是解決區間問題比較套路的方法,只要理解了這些資料結構的特徵並且掌握了 模版,遇到可建模成區間求和和區間最值的問題,就可以輕鬆解決了。稀疏表經常用來處理離線多輪rmq 區間最值 問題。之所以強調多輪,因為多輪的情況下稀...