2025-01-23前缀和

前缀和

情景

求区间[l,r]之间所有元素的和。

主要内容

一维前缀和

image-20250123181901668

二维前缀和

image-20250123183813888

模板题

https://blog.csdn.net/qq_44426403/article/details/134255195

一维前缀和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<bits/stdc++.h>
using namespace std;

int n,m;
const int N=1e5+5;
int sum[N];

void work(){
cin>>n>>m;
int pre=0,a;
for(int i=1;i<=n;i++){
cin>>a;
sum[i]=a+pre;
pre=sum[i];
}

while(m--){
int l,r;
cin>>l>>r;
cout<<sum[r]-sum[l-1]<<endl;
}
}

int main(){
work();
return 0;
}

二维前缀和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<bits/stdc++.h>
using namespace std;

int n,m,q;
const int N=1005;
int sum[N][N];


void work(){
cin>>n>>m>>q;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
int a;
cin>>a;
sum[i][j]=a+sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1];
}

while(q--){
int x1,y1,x2,y2;//左上和右下
cin>>x1>>y1>>x2>>y2;

cout<<sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1]<<endl;
}
}

int main(){
work();
return 0;
}

2025-01-23前缀和
http://666xz666.github.io/2025/01/23/前缀和/
作者
666xz666
发布于
2025年1月23日
许可协议