子矩阵的和(矩阵前缀和)

embedded/2024/11/25 12:45:03/

题目链接:用户登录 - C语言网

在这里可以模拟一下就知道了,
记录每个 (0,0) 到 (i,j)的矩阵
然后区间子矩阵的和,就减去多余的部分的矩阵和就可以得到了 子矩阵的和

然后 这里最好使用 下标 1 ~ n 到 1 ~ m 存储,这样就可以方便,根据一条规律来使用即可。

初始化函数

// 初始化矩阵前缀和
inline void Init(){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] + a[i][j] - s[i - 1][j - 1];
}

获取矩阵和函数

// 根据左上角坐标以及右下角坐标获取矩阵和
inline int getSum(PII p1,PII p2){int x1 = p1.x,y1=p1.y;int x2 = p2.x,y2=p2.y;return s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1];
}

题解代码

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define x first
#define y second
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
using PII = pair<int,int>;
const int N = 510;
int a[N][N],s[N][N],n,m,k,ans;
// 初始化矩阵前缀和
inline void Init(){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] + a[i][j] - s[i - 1][j - 1];
}// 根据左上角坐标以及右下角坐标获取矩阵和
inline int getSum(PII p1,PII p2){int x1 = p1.x,y1=p1.y;int x2 = p2.x,y2=p2.y;return s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1];
}
signed main(){IOS;cin >> n;m = n;for(int i = 1;i <= n;++i)for(int j = 1;j <= m;++j)cin >> a[i][j];// 初始化矩阵前缀和Init();// 	循环遍历所有上下坐标,并获取矩阵和for(int i = 1;i <= n;++i){for(int j = 1;j <= m;++j){PII leftUp = PII(i,j);for(int x = i;x <= n;++x){for(int y = j;y <= m;++y){PII rightDown = PII(x,y);int sum = getSum(leftUp,rightDown);ans = max(sum,ans);}}}}cout << ans << endl;return 0;
}

最后提交


http://www.ppmy.cn/embedded/140378.html

相关文章

一、语言及算法基础篇--​基础(一) C++语言​--第一章 C++语言入门

一、语言及算法基础篇 基础(一) C语言 第一章 C语言入门 题号题目名称题解1000入门测试题目1000&#xff1a;入门测试题目&#xff08;http://ybt.ssoier.cn:8088/problem_show.php?pid1000&#xff09;2060【例1.1】计算机输出2061【例1.2】梯形面积2061&#xff1a;【例1.…

晶圆测试中自动化上下料的重要性与应用

随着科技的飞速发展&#xff0c;硅光技术在通信、数据处理等领域展现出巨大的应用潜力。硅光晶圆作为硅光技术的核心源头组件&#xff0c;其性能的稳定性和可靠性对于整个系统的运行至关重要。因此&#xff0c;对硅光晶圆的测试成为生产过程中不可或缺的一环。近年来&#xff0…

CentOS8.5.2111(7)完整的Apache综合实验

一、实验目标 1.掌握Linux系统中Apache服务器的安装与配置&#xff1b; 2.掌握个人主页、虚拟目录、基于用户和主机的访问控制及虚拟主机的实现方法。 二、实验要求 练习使用linux系统下WEB服务器的配置方法。 三、实验背景 重庆工程学院为筹备“重庆工程大学”特申请了c…

python 什么是数据类dataclass,以及它的应用场景

一、什么是数据类dataclass? dataclass 是 Python 3.7 引入的一个模块&#xff0c;旨在简化类的定义&#xff0c;特别是对于那些主要用于存储数据的类。它通过自动生成常见的方法&#xff08;如 __init__、__repr__、__eq__ 等&#xff09;来减少样板代码&#xff0c;使得开发…

C#构建一个简单的前馈神经网络

1. 神经网络的基本概念 神经网络是一种模拟人脑神经元结构的计算模型&#xff0c;由多个神经元&#xff08;节点&#xff09;组成&#xff0c;这些神经元通过连接&#xff08;边&#xff09;相互作用。每个连接都有一个权重&#xff0c;用于表示连接的重要性。神经网络通常分为…

13、常用类:

13、常用类&#xff1a; 包装&#xff08;Wrapper&#xff09;类&#xff1a; 包装类的分类&#xff1a; 针对八种基本数据类型相应的引用类型——包装类&#xff1b;有了类的特点&#xff0c;就可以调用类中的方法。 基本数据类型包装类booleanBooleancharCharacterbyteBy…

深信服技术服务工程师(网络安全、云计算方向)面试题

1.tcp3次握手和四次挥手的过程。 2.简述ospf动态路由。 3.哪些地方用静态路由&#xff0c;哪些地方用动态路由&#xff0c;说说他们的区别 4.在数据包在二层交换机中是如何转发的 5.两个三层交换机如何进行通信 6.trunk和access模式区别 7.对http协议的了解&#xff08;https&a…

利用浏览器录屏

以下内容参考自网络 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title></title> </head> <body> <div class"left"> <di…