B3612 【深进1.例1】求区间和

题目链接

方法一:纯模拟50分

#include<bits/stdc++.h>
using namespace std;
int n, m;
int a[100010];
int l, r;
int ans;
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++)cin>>a[i];
	cin>>m;
	while(m--){
		ans=0;
		cin>>l>>r;
		for(int i=l; i<=r; i++) 
			ans+=a[i];
		cout<<ans<<endl;
	}
	return 0;
 }

方法二:前缀和

#include<bits/stdc++.h>
using namespace std;
int n, m;
int a[100010], per_sum[100010];
int l, r;
int ans;
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++)cin>>a[i];
	for(int i=1; i<=n; i++)per_sum[i]=per_sum[i-1]+a[i];//前缀和预处理 
	cin>>m;
	while(m--){
		ans=0;
		cin>>l>>r;
		cout<<per_sum[r]-per_sum[l-1]<<endl;
	}
	return 0;
 } 
posted @ 2023-02-11 09:37  TFLSNOI  阅读(82)  评论(0编辑  收藏  举报