前綴和可以常數時間查詢數組區間和,在輸入數組的時候順便預處理。
// 前綴和算法可以O(1) 查詢數組區間和
// sum數組用於保存前綴和,sum[i]表示A[0,i]的和
#include <iostream>
using namespace std;
int A[15];
int sum[15];
int main() {
int n; cin >> n;
// 讀取數據同時初始化前綴和數組
for (int i = 1; i <= n; i++) {
cin >> A[i];
sum[i] = sum[i-1] + A[i];
}
int a,b;
while (cin >> a >> b) { // a到b的和即是sum[b]-sum[a-1]
cout << sum[b] - sum[a-1] << endl;
}
return 0;
}
輸入
9
1
2
3
4
5
6
7
8
9
1 4
2 6
1 9
輸出
10
20
45