樹狀陣列一點心得

2022-05-17 22:12:43 字數 536 閱讀 7451

樹狀陣列的基本概念不說了,網上大佬們的講解部落格很多。

先上一段我的模板

inline int lowbit(int x)

inline void update(int x,int val){

for (int i=x; i舉兩個例子來加深一下對樹狀陣列的理解。

可以知道維護的 tree 陣列 表示到第 i 項的字首和。

那麼第乙個例子就是利用樹狀陣列求解逆序數問題。

給定乙個長度為 n 的序列, 對於每個 a[i] 我們簡單離散化一下,按從小到大給每個位置編個號 ,假設最小的數對應1,最大的數對應 n ,那麼對於新序列,對於每個位置的編號,我們 update(cnt[i])    (cnt[i] 表示該位的編號),那麼到從cnt[i] 到比他大的位置都能通過lowbit更新。 我們利用query函式可以查詢到小於該位的數的個數,通過 query(n) - query(cnt[i])即可得到 第 i 位產生的逆序數。

乙個例題就是奇數碼問題:

另乙個例子是利用樹狀陣列求連續區間內不同數的個數問題。

詳見:

SQL一點心得

sql語句將所有 stock 表裡的 縮寫 led甲 替換改寫成 led刷 update dbo stock set 縮寫 replace 縮寫 led甲 led刷 where 縮寫 like led甲 go字首 update mytable set myfield replace myfield,...

Cell myCell一點心得

ctor initializer形如 cell cell mvalue 0 mstring ctor initializer,能在建立資料成員的同時賦初值 1.const方法的工作原理是將方法內用到的資料成員都標記為const引用。因此試圖修改資料成員時,編譯器報錯。2.用explicit關鍵字標記...

openjudge 一點心得

031 校門外的樹 總時間限制 1000ms 記憶體限制 65536kb 描述某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來...