在網上講差分陣列的博文很少,也很難找到。一度以為差分陣列是傳播於小眾的神犇技巧所以一直放著沒有去研習。今天做了
bzoj1635後發現各路神犇都用差分陣列,本蒟卻傻傻寫了線段樹。。。。。
對於序列a{},取a[i]-a[i-1]為其差分陣列b[i]的值,可以發現,a[i]=∑bj(1≤j≤i)
如 對於序列 a、b、c、d 其差分陣列為 a、 b-a、 c-b、 d-c
(a-0)
有a=a,b=a+(b-a),c=a+(b-a)+(c-b),d=a+(b-a)+(c-b)+(d-c)
那麼,如果我們進行區間加減操作,且修改的區間連續不相交,那麼,若將(x,y)區間整體加val,我們就可以對差分陣列的b[x]加val,b[y+1]減val。此時差分陣列所對應的原序列即為(x,y)整體加val後的區間。
如此而已,推一推就明白了。
港口 差分陣列)
傳送門 思路 因為是區間加減,所以考慮差分陣列,題意變為 要求差分陣列d 2 d 3 d n d 2 d 3 dots d n d 2 d 3 d n 全為0.每次區間加或減會使差分陣列乙個加1,乙個減1,因為要用最小次數,所以每次操作最好產生有效貢獻,可知當為正數或負數的差分陣列變為0後,剩下我們...
差分陣列詳解
學習部落格 題目 來先看一道裸題,有n個數。m個操作,每一次操作,將x y區間的所有數增加z 最後有q個詢問,每一次詢問求出x y的區間和。思路 很明顯,直接用字首和無法快速滿足這個操作,所以我們就用到了差分陣列。設a陣列表示原始的陣列 設d i a i a i 1 1設f i f i 1 d i ...
差分 差分陣列 樹狀差分
原陣列 ai94 759差分陣列 bi9 5 3 24差分陣列的字首和94 759顯然通過求字首和可以做到單點查詢 他高效的地方在於區間修改,比如我們對區間 2,4 每個元素加上5,我們只需在差分陣列 b2 5,b5 5,然後求字首和即可 原陣列 ai94 759差分陣列 bi 903 2 1 差分...