acwing796-子矩阵的和-前缀和


s矩阵是全局变量,维度n*m,从1~n和 1~m存储元素【0】【0】~【0】【m】和【0】【0】~【n】【0】分别存储的都是0.s矩阵刚开始是存储输入的元素,后面用于存储前缀和。

s矩阵的意思是s【i】【j】表示从【0】【0】到【i】【j】为对角线的矩阵里面所有元素的和。

假设s【x1】【y1】=17,s【x2】【y2】=41,求对角线矩阵【x1】【y1】到【x2】【y2】的矩阵的所有元素和,也就是

黄色面积等于红色面积减去绿色面积再减去蓝色面积再加上紫色面积,

S=S-S绿-S+S

加上S是因为他这部分被两次减去,实际上只需要减去1次即可!加上这1次S就好了

cpp 复制代码
#include <iostream>

using namespace std;

const int N = 1010;

int n, m, q;
int s[N][N];

int main()
{
    scanf("%d%d%d", &n, &m, &q);

    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j <= m; j ++ )
            scanf("%d", &s[i][j]);

    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j <= m; j ++ )
            s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];

    while (q -- )
    {
        int x1, y1, x2, y2;
        scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
        printf("%d\n", s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1]);
    }

    return 0;
}
相关推荐
满天星83035776 分钟前
定长内存池ObjectPool
数据结构·c++·算法·链表
叼烟扛炮10 分钟前
C++第八讲:string 类
开发语言·c++·算法·string
Chase_______17 分钟前
LeetCode 1493 & 3634 题解:滑动窗口双指针,从“删一个元素的全1子数组“到“最少移除使数组平衡“
算法·leetcode
悲伤小伞30 分钟前
LeetCode 热题 100_4-283. 移动零
算法·leetcode·职场和发展
星 海35 分钟前
网络芯片对IP地址最长前缀匹配算法的实现
网络·算法
OYangxf36 分钟前
力扣hot100【滑动窗口】
算法·leetcode·职场和发展
CQU_JIAKE1 小时前
5.7【A】
算法
2zcode1 小时前
基于SVM与HOG算法的行人检测系统设计与实现
算法·机器学习·支持向量机
MATLAB代码顾问1 小时前
MATLAB实现粒子群算法优化PID参数
开发语言·算法·matlab
翎沣1 小时前
C++11异常处理机制
java·c++·算法