输入一个长度为n的整数序列。
接下来再输入m个询问,每个询问输入一对l, r。
对于每个询问,输出原序列中从第l个数到第r个数的和。
第二行包含n个整数,表示整数数列。
接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。
for (int i = 1; i <= n; i ++ ){
cin >> a[i]; s[i] = s[i - 1] + a[i]; }
前缀和的优势:以(o1)的时间复杂度得到某块区间的总和
#include
using namespace std; const int N = ; int n, m; int a[N], s[N]; int main(){
cin >> n >> m; for (int i = 1; i <= n; i ++ ) cin >> a[i], s[i] = s[i - 1] + a[i]; while (m -- ){
int l, r; cin >> l >> r; cout << s[r] - s[l - 1] << endl; } return 0; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224973.html原文链接:https://javaforall.net
