一维前缀和

题目 前缀和

image-f299d581

思路分析

image-18809357

以1位置开始 以满足s[l]为s[0]的情况

(从1开始还是从0开始 取决于有没有用到i-1这个位置)

代码实现

#include<bits/stdc++.h>
using namespace std;
#define endl '\n';

const int N=100010;
int a[N],s[N]; //其实就是等差数列
int n,m;

int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>m;
	//a[0]、s[0]默认会赋上0 这样的话求x-0的情况也能这样用 能少判断边界情况
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<=n;i++)
		s[i]=s[i-1]+a[i];
	while(m--){
		int l,r;
		cin>>l>>r;
		cout<<s[r]-s[l-1]<<endl;
	}
	return 0;
}

同类题型

视频讲解

📹 配套视频讲解:一维前缀和(acwing 视频课,原网址 Trilium 导出时未保留,待回填)


⬅️ 前缀和与差分 🏠 00-听课板子 ➡️ 二维前缀和