1. 程式人生 > >區間修改區間查詢樹狀陣列

區間修改區間查詢樹狀陣列

對於一個數組b,用樹狀陣列,我們可以單點修改區間查詢它的字首和陣列c。
對於一個數組b,用樹狀陣列,我們可以通過維護它的差分陣列a來區間修改單點查詢。
現在有b的字首和陣列c。
我們如果要區間修改區間查詢。
那麼就探尋a和c的關係就行了。
發現每個a[i]會對每個i<=j的b[j]轉移一次,
每個b[i]會對每個i<=j的c[j]轉移一次。
然後會發現a[i]通過b[k] (i<=k<=j)轉移到c[j]。
一共有j-i+1個b[k]
所以
c[j] =sigma(a[i] * (j - i + 1))
c[j] = sigma(a[i]) * (j+1) - sigma(a[i]*i)
然後就維護sigma(a[i])和sigma(a[i]*i)就行了