算法笔记:前缀和(1)
前缀和
\(pre_i = pre_{i-1} + arr_i\)
绿 = 红 + 蓝
绿色:\(pre_i\)
红色:\(pre_{i-1}\)
蓝色:\(arr_i\)
\(sum_{l \to r} = pre_r - pre_{l-1}\)
蓝 = 绿 - 红
蓝色:\(sum_{l \to r}\)
绿色:\(pre_r\)
红色:\(pre_{l-1}\)
二维前缀和
\(pre_{i,j} = pre_{i-1,j} + pre_{i,j-1} + arr_{i,j} - pre_{i-1,j-1}\)
绿 = 黄 + 红 + 蓝 - 紫
绿色:\(pre_{i,j}\)
黄色:\(pre_{i-1,j}\)
红色:\(pre_{i,j-1}\)
蓝色:\(arr_{i,j}\)
紫色:\(pre_{i-1,j-1}\)
\(x_1 \le x_2\),\(y_1 \le y_2\),\(sum_{x_1,y_1 \to {x_2,y_2}} = pre_{x2,y2} - pre_{x_1-1,y_2} - pre_{x_2,y_1-1} + pre_{x_1-1,y_1-1}\)
蓝 = 绿 - 黄 - 红 + 紫
蓝色:\(sum_{x_1,y_1 \to {x_2,y_2}}\)
绿色:\(pre_{x_2,y_2}\)
黄色:\(pre_{x_1-1,y_2}\)
红色:\(pre_{x_2,y_1-1}\)
紫色:\(pre_{x_1-1,y_1-1}\)