2 条题解
-
0
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 10, INF = 0x3f3f3f3f, MOD = 1E9 + 7; int n, m, a[N], s[N]; int main(int argc, char* argv[]) { cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i], s[i] = s[i - 1] + a[i]; int l,r; while (m--) { cin >> l >> r; cout << s[r] - s[l - 1] << endl; } return 0; }
-
0$$\begin{array}{c} &一维前缀和:S_k = \sum_{i = 1}^k{a_i};\\ &\sum_{i = l}^{r}{a_i} = S_{r}-S_{l-1}\\ \\ &二维前缀和:S_{i,j} = \sum_{i = 1}^n \sum_{j = 1}^n a_{i,j}; \\ &\sum_{i = x_1}^{x_2} \sum_{j = y_1}^{y_2} {a_{i,j}} = S_{x_2,y_2}-S_{x_1-1,y_2}-S_{x_2,y_1-1}+S_{x_1-1,y_1-1} \\ \\ &一维差分:D_i = a_i-a_{i-1}\\ &a_k = \sum_{i = 1}^k{D_i}\\ \\ &二维差分:D_{i,j} = a_{i,j}-a_{i-1,j}-a_{i,j-1}+a_{i-1,j-1}\\ &D[x_1][y_1] + = c;\\ &D[x_1][y_2+1] - = c;\\ &D[x_2+1][y_1] - = c;\\ &D[x_2+1][y_2+1] + = c;\\ \end{array} $$
- 1
信息
- ID
- 320
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 193
- 已通过
- 98
- 上传者