• C++
  • 一维前缀和【区间求和】模板

  • @ 2023-12-24 20:32:40

前缀和是一种对于数据进行预处理的算法,可以大大减轻时间复杂度,它是一种用空间换时间的思路。

例题: image 暴力源码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],n,m,l,r;

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=m;i++){
		cin>>l>>r;
		int sum=0;
		for(int j=l;j<=r;j++)sum+=a[j];
		cout<<sum;
	}
	return 0;
}

前缀和源码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],A[N],n,m,l,r;

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		A[i] = a[i]+A[i-1];
	}
	for(int i=1;i<=m;i++){
		cin>>l>>r;		
		cout<<A[r]-A[l-1];
	}
	return 0;
}

0 条评论

目前还没有评论...