前缀和与差分复习
前缀和是一种极其优秀的线性数据结构,也是一种重要的思想,它可以极大地降低区间查询的复杂度。
1、一维前缀和
预处理:
for(int i = 1; i <= n; i++)
sum[i] = sum[i - 1] + a[i];
某子段和:
sum[R] - sum[L - 1];
2、二维前缀和(注意需要两个数组)
预处理:
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
sum[i][j] = sum[i][j - 1] + sum[i - 1][j] - sum[i - 1][j - 1] + a[i][j];
某子矩阵和:
sum[x2][y2] - sum[x2][y1 - 1] - sum[x1 - 1][y2] + sum[x1 - 1][y1 - 1];
3、一维差分
预处理:
for(int i = 1; i <= n; i++)
sum[i] = sum[i - 1] + b[i];
修改区间:
b[L] += x;
b[R + 1] -= x;
4、二维差分(注意需要两个数组)
预处理:
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= m; j ++ )
b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1]
修改区间:
b[x1][y1] += c;
b[x2 + 1][y1] -= c;
b[x1][y2 + 1] -= c;
b[x2 + 1][y2 + 1] += c;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】