【前缀和与差分】
?前綴和
前綴和的作用:快速計算數組中某一段區間內的總和
1.需要兩個額外的數組,來存儲原始數據的數組 和 計算過前綴的數組。其原理為前綴和的數組中每個元素用來保存前i個原數組中的和,下一個元素更新就采用s[i] = s[i] - 1 + a [i] 來持續更新當前的元素。
2.首先需要對前綴和數組s進行初始化,s[0] 默認初始化為 0 ,從1開始進行初始化。
3.計算原數組中L到R某一段區間 可以直接使用s[R] - s[L - 1]。
#include <iostream>using namespace std;const int N = 100010;int n, m; int a[N], s[N];int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]);for (int i = 1; i <= n; i ++ ) s[i] = s[i - 1] + a[i]; // 前綴和的初始化while (m -- ){int l, r;scanf("%d%d", &l, &r);printf("%d\n", s[r] - s[l - 1]); // 區間和的計算}return 0; }差分
1.差分為前綴和的逆運算
2.
總結
- 上一篇: C++ 11 新特性(十一)final和
- 下一篇: 【WebRTC---序篇】(一)为什么要