給一個長度為n的陣列a,
每次詢問\(a_l+a_{l+1}...a_r\)的值
考慮\(p_i\)為\(a_1...a_i\)的和
對於\(a_l...a_r\)的和
可以表示成\(p_r - p_{l - 1}\)
有q筆操作,每次操作可表示為l, r, v
帶表對於\(a_l...a_r\)每一個值都加上v
在q筆操作後,輸出a陣列
對於一個差分陣列d
定義\(d_i = a_i - a_{i - 1}\)
\(d_1 = a_1\)
可以知道\(a_i = d_1...d_i的和\)
所以如果把\(d_l\)加上v
就相當於把\(a_l到a_n都加上v\)
接著再把\(d_{r+1}\)減掉v
相當於把\(a_{r+1}到a_n都減掉v\)
這樣就能夠把\(a_l到a_r\)都加上v
最後在對差分陣列做一次前綴和就好了
By scottchou