二階差分


例:給區間[L,R]加首項為s,公差為d的等差數列

a[ ]表示原數組,b[ ]表示a的差分數組,c[ ]表示b的差分數組

a[i] = a[i]+s+(i-L)*d , L<=i<=R

b[L] = a[L]+s-a[L-1] = b[L]+s

b[i] = a[i]+d-a[i-1] = b[i]+d , L<i<=R

b[R+1] = a[R+1]-[a[R]+s+(R-L)*d] = b[R+1]-s-(R-L)*d

c[L] = b[L]+s-b[L-1] = c[L]+s

c[L+1] = b[L+1]+d-(b[L]+s) = c[L+1]+d-s

c[i] = b[i]-b[i-1] = c[i] , L<i<=R

c[R+1] = b[R+1]-s-(R-L)*d-b[R] = c[R+1]-s-(R-L)*d

c[R+2] = b[R+2]-[b[R+1]-s-(R-L)*d] = c[R+2]+s+(R-L)*d

對c數組求一次前綴和得b數組,再求一次得a數組

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM