【演算法】前綴和(Prefix Sum)
簡介
前綴和可記錄 0~n 的總和,在求區間和或者要使用差分轉原數列時會用到。
應用
區間和、差分陣列轉原陣列時
原理:前綴和
index | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
原 Array | 1 | 2 | 3 | -5 | 7 | -3 |
前綴和 sum | 1 | 3 | 6 | 1 | 8 | 5 |
這時區間和就運用到數學的和差公式:
取 index 區間和 答案會是 sum[4] - sum[1]
快速總結:取 index 區間和 公式就是 sum[b] - sum[a - 1]
所以在輸入陣列時,我們可以一起記下前綴和。
1 | int n, q; |
初始化完後,就可以直接計算詢問的區間和。
1 | while (q--) { |
題目
- CSES Static Range Sum Queries