直接回答:前缀和:对静态数组预处理 P[i]=P[i-1]+a[i],此后任意区间和 [l,r] 以 P[r]-P[l-1] 在 O(1) 回答——把区间查询从 O(n) 降到 O(1),代价 O(n) 预处理。差分是前缀和的逆运算:D[i]=a[i]-a[i-1],对区间 [l,r] 统一加 v 只需 D[l]+=v、D[r+1]-=v,最后求一遍前缀和还原数组——把区间修改从 O(n) 降到 O(1),适合“批量区间修改 + 一次最终查询”。

展开解析:二维前缀和:S[i][j] 表示左上角到 (i,j) 的矩形和,递推 S[i][j]=S[i-1][j]+S[i][j-1]-S[i-1][j-1]+a[i][j](容斥去重),任意子矩形和用四角容斥 O(1) 求得;二维差分对称地支持矩形区域加减,四角打标记。适用边界:前缀和只支持静态数组(频繁单点修改就要上树状数组/线段树);要求运算可逆(和、异或可以,最大值不行——max 没有逆运算,这也是“区间最值查询”不能用前缀和的原因)。常见变体:前缀异或(子数组异或题)、前缀计数(按值域或按奇偶前缀统计,如“和为 k 的子数组个数”用前缀和 + 哈希表 O(n))、环形数组复制一倍再前缀。实现细节:下标偏移一位免边界判断;整型溢出用 64 位;差分还原后记得校验 r+1 越界。思维上前缀和是“用预处理换查询”,是最基础的空间换时间范式。

追问方向:带单点修改的区间和查询用什么结构?前缀和思想如何用到子矩阵和问题?

(约 470 字)