什麼是字首和
O(N)的預處理 以O(1)的時間求部分和 S[1, N] = a1 + a2 + ... + aN; 我們如果要求S[L, R] a1 + a2 + ... + aL-1 + aL + ... + aR 就是要aL + ... + aR的部分 -》 S[R] - S[L - 1] S[]怎麼來 S[i] = S[i - 1] + a[i]
字首和的逆
它是字首和的轉變 a[i] = pre[i] - pre[i - 1]
Code:
#include <bits/stdc++.h> using namespace std; const int N = 105; int pre[N]; int main() { int N; cin >> N; for (int i = 1; i <= N; i++) { cin >> pre[i]; } for (int i = 1; i <= N; i++) { cout << pre[i] - pre[i - 1] << " \n"[i == N]; } return 0; }