求区间和

作者: qiqi 分类: 前缀和/差分 发布时间: 2025-10-23 20:23

提交链接

题目描述:给定 n 个正整数组成的数列 a1​,a2​,⋯,an​ 和 m 个区间 [li​,ri​],分别求这 m 个区间的区间和。

#include <bits/stdc++.h>
using namespace std;

int s[100001], a[100001];
int n, m;

int main()
{
	int l, r, ans;
	scanf("%d", &n);
	a[0] = 0;
	s[0] = 0;
	for (int i = 1; i <= n; i++)
	{
		scanf("%d", a + i);
		s[i] = s[i - 1] + a[i];
	}
	scanf("%d", &m);
	while (m--)
	{
		scanf("%d%d", &l, &r);
		ans = s[r] - s[l - 1];
		printf("%d\n", ans);
	}

	return 0;
}

简单的模板题。其实数组a完全可以不使用,直接使用前缀和数组即可。如果需要原数组,可以直接做差分。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

标签云