给定一个n个元素的数组,
,...,
,设计一个数据结构,支持一个查询操作Query(L,R):计算
。
如果每次利用循环来计算,单次查询需要的时间,效率太低。如果借助前缀和的思想,可以花
时间事先计算好
(定义
),因为
,每次查询都只需要
时间。
#include<stdio.h>
const int maxn = 10005;
int s[maxn];
int main() {
int n, x;
scanf("%d", &n);
s[0] = 0;
for (int i = 1; i <= n; ++i) {
scanf("%d", &x);
s[i] = s[i-1] + x;
}
// Query(L,R)
int l, r;
while (scanf("%d%d", &l, &r) == 2) {
printf("%d\n", s[r] - s[l-1]);
}
return 0;
}