首页 > 其他分享 >前缀和

前缀和

时间:2023-02-25 21:44:18浏览次数:42  
标签:前缀 int i2 long i1 ans

前缀和大大缩短运算所需时间,但要牺牲一大部分空间。

例题:B3612 【深进1.例1】求区间和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

在本题中有一个新思路

原数组a:i1,i2,i3,i4,i5……

前缀和数组s:i1,i1+i2,(i1+i2)+i3,……

模拟代码如下:

for(int i=1; i<=n; i++)
	s[i]=s[i-1]+a[i];
具体使用:
如求a[f]+a[f+1]+……+a[r]的和时
只需用s[r]-s[f-1]即可
题解代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[100010];
long long ans,s[100010];
int l,r;
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++)
	cin>>a[i];
	cin>>m;
	for(int i=1; i<=n; i++)
	s[i]=s[i-1]+a[i];
	for(int i=1; i<=m; i++)
	{
		cin>>l>>r;
		ans=s[r]-s[l-1];
		cout<<ans<<endl;
		ans=0;
	}
	
 } 

标签:前缀,int,i2,long,i1,ans
From: https://www.cnblogs.com/Zelda-anjisuan/p/17155485.html

相关文章