樹狀陣列 淺顯學習

2022-05-03 12:57:16 字數 719 閱讀 4891

學習**

首先要明確樹狀陣列的本質就是帶修改的字首和,它每次用 lowbit 來很巧妙的尋找所屬字首的位置 在這些位置+k

然後還是用 lowbit 來查詢這段和應該屬於的樹狀陣列的位置。

最簡單的就是單點更新和區間查詢,或者區間更新

int c[maxn];//樹狀陣列

int n;//樹狀陣列的大小

int lowbit(int x)

void update(int i,int k)

}int getsum(int i)//字首和思想

return ans;

}

然後就是區間更新和單點查詢

這個就要用到差分的思想了  差分學習

學習完差分之後,應該就感覺很簡單了,就是樹狀陣列存的是差分陣列,

所以現在的區間更新就變成兩點更新了,就更新了兩個點。

然後就是區間更新和區間查詢

這個區間查詢有點複雜,直接看上面的公式吧。

維護了兩個值,乙個是sum1 乙個是(i-1)*sum[i]

int sum1[maxn], sum2[maxn];

int n;//樹狀陣列的大小

int lowbit(int x)

void update(int i,int k)

}int getsum(int i)//字首和思想

return ans;

}

對資料庫連線池的淺顯學習總結

資料庫連線池?資料庫連線池負責分配 管理 和釋放資料庫連線,它允許應用程式重複使用乙個現有的資料庫連線,而不是重新建立乙個,釋放空閒時間超過最大空閒時間的資料庫連線來避免因為沒有釋放資料庫連線而引起的資料庫連線遺漏。也就是說 每乙個資料庫連線物件都會對應乙個物理資料庫連線,如果每次連線的時候都開啟乙...

樹狀陣列學習

之前寫的題也遇到過用樹狀陣列,當時都是現查現學,而且總是搞不懂,今天又遇到了一道求區間和的題,不管最後是不是用樹狀陣列可以a,但是既然已經想到了這,就打算好好學習一下。可惜之前查到的資料都沒有儲存記錄,所以又重新查了些資料,彙總學習如下 文末附上樹狀陣列的詳細 樹狀陣列主要用到的操作 int low...

樹狀陣列學習

我覺得,樹狀陣列挺重要的就是那個 lower x x x 我說說我的理解吧。每乙個正整數都可以拆分成 2 的某些冪之和,例如 15 8 4 2 1 6 4 2 7 4 2 1 感覺可以解釋lca的倍增跳 那麼轉換成二進位制是什麼樣的呢?15 十進位制 1111 1000 100 10 1 6 十進位...