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;
}
相关推荐
晚风予卿云月2 分钟前
二分算法练习
数据结构·c++·算法·竞赛·算法随笔
菜菜的顾清寒7 分钟前
力扣HOT100(47) 二叉树的层序遍历
算法·leetcode·深度优先
周末也要写八哥8 分钟前
牛顿迭代Python代码实现
算法
KaMeidebaby22 分钟前
卡梅德生物技术快报|基因测序技术在 46,XY 性发育障碍变异筛查中的流程与数据分析
服务器·前端·数据库·人工智能·算法·数据挖掘·数据分析
ZengLiangYi24 分钟前
SourceAdapter 插件架构详解
javascript·算法·架构
妄想出头的工业炼药师32 分钟前
特征检测和特征筛选
算法·开源
cxr82834 分钟前
高分子复合材料 AI 逆向设计合——学证明、算法实现、验证数据与学术资源全集
人工智能·线性代数·算法
ZengLiangYi41 分钟前
如何解析 5 种完全不同格式的 AI 对话
javascript·人工智能·算法
计算机安禾1 小时前
【算法设计与分析】第29篇:启发式与元启发式搜索方法综述
java·数据库·算法
我叫袁小陌1 小时前
数据结构详解与算法关联指南
算法