前缀和

题目

给定数组a和若干个l,r,求a[l]+a[l+1]+a[l+2]+…+a[r-1]+a[r]

输入描述:
第一行,一个整数n,代表数组长度(1<n<100000)
第二行,n个整数
第三行,一个整数q,代表询问次数(1<q<100000)
接下来q行,整数l和r
保证数组a所有数字的和不超过1e9

样例输入
5
2 8 7 5 6
3
1 5
2 5
1 3

样例输出
28
26
17

个人见解

撤每次输入数组的前缀,求之中的数和,如果每次都用for循环来写,空间复杂度和时间复杂度都会很高,好多用例不满足,通过不了题目要求;所以先定义一个数组来包含1-2 1-3 1-4 1-5…之和,再由输入的前缀来判断;比如输入2 5
那就应该是1-5 减去 1-1这样就可以节省复杂度了;

我真是个小机灵鬼,上实现

图片

图片:
用来记录自己学习
值得一提的是,h=b[y]-b[x-1];这里,注意一下为什么会是x-,i为什么是从1开始而不是0;

相关文章: