子矩阵的和 刷题笔记 {二维前缀和}

首先我们的目标是让 sij表示为其左方和上方形成的矩阵所有元素的和

加上si-1j和sij-1后 si-1j-1部分重复了所以减去

最后加上aij即可完成目标

sij=si-1j+sij-1-si-1j-1+aij;

然后看题目要求

要求x1,y1,x2,y2围成的小正方形内的元素和

我们利用刚刚处理好的sij来操作

将是sx2y2圈成的大正方形里面扣掉这两块

即sx2y1-1和sx1-1y2

最后加回去重复减去的sx1-1y1-1即可

所以式子为 sx2y2-sx2y1-1-sx1-1y2+sx1-1y1-1

代码

#include<iostream>

#include<cstring>

#include<cstdio>

#include<algorithm>

using namespace std;

const int N=1010;

int aNN,sNN;

int n,m,q;

int main(){

cin>>n>>m>>q;

for(int i=1;i<=n;i++)

{

for(int j=1;j<=m;j++)

{

cin>>aij;

sij=si-1j+sij-1-si-1j-1+aij;

}

}

while(q--){

int x1,y1,x2,y2;

cin>>x1>>y1>>x2>>y2;

cout<<sx2y2-sx2y1-1-sx1-1y2+sx1-1y1-1;

}

return 0;

}

相关推荐
zjxtxdy2 小时前
SPI通信协议
笔记·单片机
彧azz4 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
aramae5 小时前
MySQL内置函数(7)
开发语言·笔记·后端·mysql·其他
bessyon5 小时前
信息透明度与决策效率:一个技术视角的分析
笔记
hanlin036 小时前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
自不量力的A同学7 小时前
开源一站式智能终端 uniTerm v1.9.4 发布
笔记
91刘仁德7 小时前
C++ 继承和多态 设计模式
c语言·c++·笔记
库玛西8 小时前
哈夫曼树与前缀编码:数据压缩的贪心核心
c语言·c++·笔记·考研
Rabitebla10 小时前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法
库玛西10 小时前
数据结构与算法之美:树、森林与二叉树全解析
c语言·数据结构·笔记·考研·算法·学习方法