二维差分 C++版本 python版本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了二维差分 C++版本 python版本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1306字,纯文字阅读大概需要2分钟。
内容图文
AcWing 798差分矩阵 https://www.acwing.com/problem/content/800/
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int N = 1005; int a[N][N]; int b[N][N]; void sert(int x1, int y1, int x2, int y2, int c) { b[x1][y1] += c; b[x2+1][y1] -= c; b[x1][y2+1] -= c; b[x2+1][y2+1] += c; } int main() { int n, m, q; cin >> n >> m >> q; for(int i = 1; i<= n; ++ i) for(int j = 1; j <= m; ++ j) { cin >> a[i][j]; sert(i, j, i, j, a[i][j]); } while(q --) { int x1, y1, x2, y2, c; cin >> x1 >> y1 >> x2 >> y2 >> c; sert(x1, y1, x2, y2, c); } for(int i = 1; i <= n; ++ i) { for(int j = 1; j <= m; ++ j) { b[i][j] = b[i-1][j] + b[i][j-1] - b[i-1][j-1] + b[i][j]; //对差分数组求前缀和就是原数组 cout << b[i][j] << " "; } cout << endl; } return 0; }
n, m, q = map(int, input().split()) a = [[0 for i in range(m+5)] for i in range(n+5)] b = [[0 for i in range(m+5)] for i in range(n+5)] def insert(x1, y1, x2, y2, c): b[x1][y1] += c b[x1][y2+1] -= c b[x2+1][y1] -= c b[x2+1][y2+1] += c for i in range(1, n+1): row = [0] + list(map(int, input().split())) for j in range(1, m+1): a[i][j] = row[j] insert(i, j, i, j, a[i][j]) while q: q -= 1 x1, y1, x2, y2, c = map(int, input().split()) insert(x1, y1, x2, y2, c) for i in range(1, n+1): for j in range(1, m+1): b[i][j] += b[i-1][j] + b[i][j-1] - b[i-1][j-1] print(b[i][j], end=" ") print("")
内容总结
以上是互联网集市为您收集整理的二维差分 C++版本 python版本全部内容,希望文章能够帮你解决二维差分 C++版本 python版本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。