差分詳解 樹狀陣列擴充套件

2021-10-03 04:12:24 字數 896 閱讀 7396

前言:現在還不是很懂,不過先把模板抄在這裡把。

介紹一下差分,乙個很簡單的東西。

一、簡介

已知陣列a為1,2,1,5,7,4

那麼差分陣列1,1,-1,4,2,-3

顯然,差分陣列就是當前項與前一項的差值。

容易得到,an就是差分陣列的前n項和。

二、那麼有什麼便利的地方呢?

我們假想一下,現在要給1至4的區間每個數加上1,那麼差分陣列會變成什麼樣呢,模擬一下得

a陣列2,3,2,6,8,5

差分陣列2,1,-1,4,1,-3

可以看到,只有下標為1和5的地方發生了變化。

剛才我們說到,差分陣列的前n項和就是an,那我們在差分陣列的1處加1,在5處減1,那麼1到4利用差分陣列字首和求an,an的值確實都加了1,當我們求a5以後的數的話,我們就不需要加1了,所以差分陣列a5處減1.

這樣,差分陣列的字首和仍然是an。

樹狀陣列+差分

#include using namespace std;

typedef long long ll;

ll n,m,tree[500009];

ll lowbit(ll x)

ll sumn(ll x)

return ans;

}void add(ll x,ll w)

}int main()

for(int i=1;i<=m;i++)

else}}

差分樹狀陣列

一 假設現在有乙個原陣列a 假設a 0 0 有乙個陣列d,d i a i a i 1 那麼 a i d 1 d 2 d i d陣列就是差分陣列 所以求a i 就可以用樹狀陣列維護d i 的字首和 即維護的是d i 的樹狀陣列 上面的數學思想可以實現區間修改,以及單點查詢。下附上 區間修改 1 n v...

差分 差分陣列 樹狀差分

原陣列 ai94 759差分陣列 bi9 5 3 24差分陣列的字首和94 759顯然通過求字首和可以做到單點查詢 他高效的地方在於區間修改,比如我們對區間 2,4 每個元素加上5,我們只需在差分陣列 b2 5,b5 5,然後求字首和即可 原陣列 ai94 759差分陣列 bi 903 2 1 差分...

樹狀陣列與差分

1.什麼是樹狀陣列?顧名思義,就是用陣列來模擬樹形結構唄。那麼衍生出乙個問題,為什麼不直接建樹?答案是沒必要,因為樹狀陣列能處理的問題就沒必要建樹。和trie樹的構造方式有類似之處。2.樹狀陣列可以解決什麼問題 可以解決大部分基於區間上的更新以及求和問題。3.樹狀陣列和線段樹的區別在 樹狀陣列可以解...