这里写自定义目录标题
前缀和
题目
给定数组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;