二维前缀和 子矩阵的和


文章目录


提示:以下是本篇文章正文内容

一、题目

输入一个 n

行 m

列的整数矩阵,再输入 q

个询问,每个询问包含四个整数 x1,y1,x2,y2

,表示一个子矩阵的左上角坐标和右下角坐标。

对于每个询问输出子矩阵中所有数的和。

输入格式

第一行包含三个整数 n,m,q

接下来 n

行,每行包含 m

个整数,表示整数矩阵。

接下来 q

行,每行包含四个整数 x1,y1,x2,y2

,表示一组询问。

输出格式

共 q

行,每行输出一个询问的结果。

数据范围

1≤n,m≤1000

,

1≤q≤200000

,

1≤x1≤x2≤n

,

1≤y1≤y2≤m

,

−1000≤矩阵内元素的值≤1000

输入样例:

3 4 3

1 7 2 4

3 6 2 8

2 1 2 3

1 1 2 2

2 1 3 4

1 3 3 4

输出样例:

17

27

21

二、思路及代码

1.思路

2.答案

代码如下:

c 复制代码
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;


const int N = 1010;

int a[N][N], s[N][N];

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];
    
    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] + a[i][j];
    
    while (q --)
    {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        
        cout << s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1] << endl;
    }
    
    return 0;
}

总结

Just Review.

相关推荐
郁闷的网纹蟒16 分钟前
虚幻5---第16部分---敌人(中)
开发语言·c++·ue5·游戏引擎·虚幻
二年级程序员23 分钟前
单链表算法题思路详解(上)
c语言·数据结构·c++·算法
rhett. li27 分钟前
Windows系统中使用MinGW-W64(gcc/g++或LLVM)编译Skia源码的方法
c++·windows·ui·用户界面
wshzd33 分钟前
LLM之Agent(四十四)|使用 GRPO 算法训练多智能体系统用于复杂任务规划
算法
谁不学习揍谁!1 小时前
基于python机器学习算法的农作物产量可视化分析预测系统(完整系统源码+数据库+详细文档+论文+详细部署教程+答辩PPT)获取方式
python·算法·机器学习
麦德泽特1 小时前
构建统一的机器人武器与伤害感应接口:I²C总线与PWM地址分配的巧妙结合
c语言·开发语言·机器人
小乔的编程内容分享站1 小时前
C语言笔记一维&二维数组
c语言·笔记
wangluoqi1 小时前
c++ 数据结构-树状数组、线段树 小总结
开发语言·数据结构·c++
化学在逃硬闯CS1 小时前
Leetcode111. 二叉树的最小深度
数据结构
在黎明的反思1 小时前
文件级建议性锁函数flock
c语言·c++