二维前缀和
来源:互联网 发布:淘宝信息发布平台 编辑:程序博客网 时间:2024/06/05 16:31
解释
二维前缀和用于计算在矩阵中的任意一个矩形中数字之和,若仅用两个for将其中的所有元素相加,处理所有矩形必然超时,正确做法的复杂度为O(m*n).
方法
首先预处理处以所有点为右下角,(1,1)为左上角的矩阵中的元素和.
接着(x1,y1)为右下角,(x2,y2)为左上角的矩形中的元素和为f[x1][y1]+f[x2-1][y2-1]-f[x1][y2-1]-f[x2-1][y1].
详见代码
代码
#include<bits/stdc++.h>#define MAXM 3010#define MAXN 3010using namespace std;int m,n,a[MAXM][MAXN],jx[MAXM][MAXN],x,y,u,v;int main(){ int i,j; cin>>m>>n; for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { scanf("%d",&a[i][j]); } } //预处理: for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { jx[i][j]=a[i][j]+jx[i-1][j]+jx[i][j-1]-jx[i-1][j-1]; } } while(~scanf("%d%d%d%d",&u,&v,&x,&y)) { printf("%d\n",jx[u][v]+jx[x-1][y-1]-jx[u][y-1]-jx[x-1][v]); }}
阅读全文
0 0
- 二维前缀和
- 二维前缀和
- BZOJ 1218 二维前缀和
- bzoj1218 激光炸弹 二维前缀和
- 【POJ2155】Matrix-二维树状数组+前缀和
- hdu 5791 Two 二维前缀和
- codeforces Star sky(二维前缀和)
- 二维前缀和 codeforces 832C
- Codeforces835C-Star sky(二维前缀和+思维)
- codeforces835 b贪心 c 二维前缀和
- codeforces 835C(二维前缀和)
- 【CS 1373】射命丸文(二维前缀和)
- duty (图论题.二维前缀和)
- 洛谷Oj-创意吃鱼法-二维前缀和/二维动态规划
- 一维数组和二维数组前缀和
- Codeforces 611C:New Year and Domino 二维前缀和
- Codeforces 611C:New Year and Domino 二维前缀和
- hdu 1081 最大子矩阵(二维前缀和优化)@
- Strust2实现文件上传
- golang并发ssh执行远程命令
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。
- 进程间通信—共享内存、信号量
- 升级.Net Core 1.x App 及.Net Standard 1.x Library 到2.0 版
- 二维前缀和
- STM32自动完成esp8266配置
- jupyter notebook, permission denied 解决方法
- leetcode_382. Linked List Random Node ? 待解决
- 杨辉三角
- Hibernate:LazyInitializationException: failed to lazily initialize a collection of rol
- ssh执行远程命令的坑
- 如何添加ubuntu的root用户
- hdu 1228 A+B (字符串处理) 水