题目描述
blablabla
样例
#include <iostream>
using namespace std;
const int N = 1010;
int diff[N][N], a[N][N];
int main(void) {
int n = 0, m = 0, q = 0;
cin >> n >> m >> q;
// 输入整数矩阵
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j];
// 我们需要根据已有的整数矩阵,计算出diff数组
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
diff[i][j] = a[i][j] + a[i-1][j-1] - a[i-1][j] - a[i][j-1];
// 进行q次加c操作
while (q--) {
int x1 = 0, y1 = 0, x2 = 0, y2 = 0, c = 0;
cin >> x1 >> y1 >> x2 >> y2 >> c;
diff[x1][y1] += c;
diff[x1][y2+1] -= c;
diff[x2+1][y1] -= c;
diff[x2+1][y2+1] += c;
}
// 之后我们再根据diff数组还原出之后的整数数组
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
a[i][j] = a[i-1][j] + a[i][j-1] + diff[i][j] - a[i-1][j-1];
// 输出结果即可
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla