```
基础算法复习
1.前缀和
const int N=1e5+10;
//前缀和,目的:快速求出数组中某段区间和
//一维前缀和
int a[N];//原数组
int s[N];//前缀和数组
//边界处理(全局数组不用)
s[0]=0;
//目的:快速求出数组中某段区间和
s[r]=s[l-1]//求出[l,r]中的和
//构造
s[i]=s[i-1]+a[i];
//二维前缀和,目的:求出在二维数组中的某个矩形(或正方形)的区域内数字之和
int a[N][N];
int s[N][N];//注意下标统一从(1,1)开始
//边界处理 s[0][j],s[0][0],s[i][0]都为0
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j]; //从(1,1)到(i,j)的区域内数字和
//求区域(x1,y1)到(x2,y2)内数字之和为
S=s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][x2-1];//减1是因为包含边界
```
基础题目训练总结
于 2023-03-13 16:01:55 首次发布