最大子矩阵(HDU - 1559,前缀和)

矩阵前缀和应用1:最大和子矩阵 前缀和+动态规划 关于矩阵前缀和【矩阵前缀和:常数时间求一子矩阵的加和】 给一个m*n的矩阵,找到一个子矩阵使其里面的数字加和最大,输出这个最大值 首先想到暴力算法: 枚举矩阵行列,复杂度O(n4),然后对每个枚举的子矩阵,计算矩阵内的加和O(n2),总复杂度O(n6) 通过前缀和,可以把计算加和的时间变为O(1),总复杂度O(n4),还是有点大 优化:引入动态规划中的最大子区间问题 【类似的题目】 已知一个一维数... 阅读详情

一.题目链接:

HDU-1559

二.题目大意:

给出一个 m × n 的矩阵,和一个大小为 x × y 的子矩阵,求子矩阵的最大值为多少?

三.分析:

利用前缀和求出 顶点 到 每个点 矩阵的和,然后枚举子矩阵顶点的位置即可.

如图:

四.代码实现:

#include <set>
#include <map>
#include <ctime>
#include <queue>
#include <cmath>
#include <stack>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define eps 1e-6
#define PI acos(-1.0)
#define ll long long int
using namespace std;

const int M = 1010;
int sum[M][M];

int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        memset(sum, 0, sizeof(sum));
        int m, n, x, y;
        int data;
        scanf("%d %d %d %d", &m, &n, &x, &y);
        for(int i = 1; i <= m; ++i)
        {
            for(int j = 1; j <= n; ++j)
            {
                scanf("%d", &data);
                sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + data;
            }
        }
        int ans = 0;
        for(int i = 1; i + x - 1 <= m; ++i)
        {
            for(int j = 1; j + y - 1 <= n; ++j)
            {
                ans = max(ans, sum[i + x - 1][j + y - 1] - sum[i + x - 1][j - 1] - sum[i - 1][j + y - 1] + sum[i - 1][j - 1]);
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}

 

HDU1559 最大子矩阵和(二维前缀和模板) 二维前缀和可以实现一个矩形区域内的求和问题,而本题恰好就是要求一个矩阵内部的和的最大值,所以直接套用二维前缀和并在结尾进行最大值更新即可。 #include<pch.h> #include <iostream> #include <cstdio> #include <bits/stdc++.h> #include <queue> #i... 阅读详情

相关推荐

HDU 1559 最大子矩阵(二维前缀和 · DP,218 ms)

一、题目描述 Problem Description 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。 Input 输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有...

COFACTOR 396

最大子矩阵:前缀和 + 线性动态规划

那么它的子矩阵就是矩阵中的某一片矩阵型的区域,那所要求的“最大子矩阵”的自然是找到在所有子矩阵中,矩阵元素和最大的那个矩阵。第二种情况是将当前位置的元素加入到之前的子序列中,即从当前位置开始新的子序列。dp[i - 1] + nums[i - 1] 表示从当前位置向前延伸的子序列的和,即以 nums[i - 1] 结尾的子序列和加上当前位置的元素值。其实通过上面的例子,我们不难发现进行预处理后的前缀和数组,仍然可以表示原数组的元素,更方便的是对于求原数组圈定矩阵元素和,在处理后的数组中仅通过使用。

2301_76606232的博客 1266

1224:最大子矩阵 2020-12-02

1224:最大子矩阵 时间限制: 1000 ms 内存限制: 65536 KB【题目描述】 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1×1)子矩阵。 比如,如下4×4的矩阵 0 −2 −7 0 9 2 −6 2 −4 1 −4 1 −1 8 0 −2 的最大子矩阵是 9 2 −4 −1 1 8 这个子矩阵的大小是15。【输入】 输入是一个N×N的矩阵。输入的第一行给出N(0<N≤100)。再后面的若干行中,依次(首先从左到右给出第一行的...

lybc2019的博客 1176

最大子矩阵和 = 前缀和 + 最大子段和

Luogu P7741 简单来说这道题就是求一个 N×MN \times MN×M 的矩阵的最大子矩阵和。 (因为求的是黑色石板与白色石板的数量差,所以代表白色石板的“0”可以看作 -1,这样就将问题转化为了求最大子矩阵和) 思路: 首先,这个子矩阵可以是任意大小的,而且起始点也可以在任何地方,所以,要把最大子矩阵找出来,我们要考虑多种情况。 假定原始矩阵的行数为 MMM,那么对于子矩阵,它的行数可以是 1 到 MMM 的任何一个数,而且,对于一个 KKK 行(K≤MK \le MK≤M)的子矩阵,它的第一

ycw123__QAQ_233的博客 457

告别混乱!AutoSar BswM模式管理实战:手把手教你配置Rule与ActionList(附避坑指南)

本文详细解析了AutoSar BswM模式管理的实战配置,重点介绍了Rule与ActionList的高效组合方法,帮助开发者避免常见陷阱。通过具体案例演示了从基础到复杂的配置步骤,包括模式仲裁、逻辑表达式构建及ActionList优化策略,提升汽车电子系统的协调性与可靠性。

weixin_27066963的博客 259

基于51单片机扫地机器人(全套Proteus仿真+原理图+程序+说明书)

(内含源程序代码,原理图,仿真,讲解视频,元件清单等,【精品】值得推荐!!!扫地机器人是以单片机为主控制器。通过单片机控制小车行驶、除尘、蜂鸣。扫地机器人使用双电机驱动,以提高整车运动的平稳性;在智能车进驶过程中,采用双超声波模块实现避障。

2301_76434107的博客 1895

多维度求解最大子矩阵和(前缀+压缩+DP)

求解此类问题要找规律,首先看一下维度为1时的该问题。 ①当维度为1时。 此问题变为求最大连续子段和。此时可以用动态规划来解决该问题。 动态规划的思路也很简单 步骤 1:令状态 dp[i] 表示以 A[i] 作为末尾的连续序列的最大和(这里是说 A[i] 必须作为连续序列的末尾)。 步骤 2:做如下考虑:因为 dp[i] 要求是必须以 A[i] 结尾的连续序列,那么只有两种情况: 这个最大和的连续序...

youcaishen的博客 400

如何快速学习 PHP 编程:从入门到实战的高效路径

PHP高效学习路线摘要:4-8周掌握Web开发核心技能。阶段1(1周)搭建XAMPP/MAMP环境,掌握基础语法和变量处理;阶段2(2周)重点学习表单处理、会话管理和PDO数据库操作(防SQL注入);阶段3(2-3周)实战开发个人博客等小项目。关键原则:边学边练(每个知识点配3-5个案例)、优先掌握Web刚需技能(HTTP请求、数据库、动态页面)、善用官方手册。避坑点:密码必须加密、SQL使用预处理、统一UTF-8编码。建议每天2-3小时实操,通过项目驱动学习,快速形成开发能力。

2501_94233638的博客 1387

最大子矩阵hdu1559(二维前缀和)

最大子矩阵hdu1559 Problem Description 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。 Input 输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下...

做一只熊猫不好吗? 451

Linux 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Linux 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 步骤一 安装Node.js 2.2 步骤二:安装git 2.3 步骤三:安装并配置OpenClaw 2.4 步骤四:配置OpenClaw 2.5 步骤五:配置模型 2.6 步骤六:对话 3. 后续使用步骤 4. 报错解决方案 5. OpenClaw的卸载

weixin_43178406的博客 10万+

vue2/3 - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

vue扫描二维码条形码,vue网页调用摄像头扫二维码条形码,vue移动端如何实现调用相机扫描二维码,vue移动端扫一扫功能,vue怎么做移动端h5扫一扫功能,vue识别二维码和条形码,vue实现点击按钮调用摄像头扫码,vue调用本地摄像头实现拍照功能,Vue中如何进行二维码生成与扫描,如何实现vue在手机浏览器中调用摄像头实现扫描二维码功能,VUE项目移动端H5调用摄像头扫码,vue项目中实现H5调取摄像头,网页调用摄像头实现二维码扫描功能,vue调用手机摄像头,vue在调用摄像头扫码,vue自定义打开摄像

✅ 精选推荐文章 1万+

二维前缀和——HDU - 1559 最大子矩阵

给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。 Input 输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的正整数。 Out...

weixin_44064434的博客 311

130页5万字某市档案馆数字档案馆建设方案

【版权声明】本资料来源网络,仅用于行业知识分享,供个人学习参考,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间进行删除!完整资料领取见文末,部分资料内容:国家档案局证实颁布《数字档案馆建设指南》, 明确了数字档案馆建设原则、要求、目标,对相关系统建设内容、功能要求进行了概括和详细说明。数字档案馆系统建设应以 OAIS&nbsp;参考模型为设计基础,以实现数字资源的长期保存与可信管理。设计的数字档案馆系统架构如下图。图-1 数字档案馆体系结构数字档案馆建设包括五大层次和三大保障体系:

zuoan1993的博客 1180

【动态规划+前缀和】HDU-1559 最大子矩阵

注解 1、dp[i],[j] 表示 以i,j为右下角,最左上方元素为左上角的矩形的元素和。(用到了前缀和的思想) 所以在输入某元素后,dp[i],[j] = dp[i],[j-1] + dp[i-1],[j] + dp[i],[j]。(其中后面这个dp[i],[j]其实指的是第(i,j)位置的元素) 2、在求出dp[i],[j]之后,要想求最大子矩阵,其实是求 dp[j],[k] - dp[j]...

zhanggirlzhangboy的博客 253

Trae+雪球MCP,化身专业的股票分析师(玩转100个MCP系列第二弹)

大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。第二弹,使用Trae+雪球MCP,获取股票实时行情,分析股票走向等,写代码间隙看看股票价格,研究研究行情,哈哈。真的很不错呀,最关键的是,足够隐蔽,同事以为你在写代码,实际你在浏览股票行情,哈哈,感兴趣的可以试一下哦。说实话,沧州明珠这只股我算是砸手里了,不过还好买的不多,哈哈。

cpp加油站的专栏 518

深度揭秘!用 DeepSeek 打造超智能电商客服系统全流程

摘要:本文围绕使用 DeepSeek 开发电商智能客服展开详细教程。先介绍前期准备,包括了解 DeepSeek、获取 API 权限与搭建开发环境。接着阐述数据收集预处理,结合电商业务逻辑实现商品与订单信息查询。还提及优化性能的方法,如模型微调、多轮对话管理和错误处理。然后说明了基于 Web 和云平台的部署方案。最后强调持续监控和改进的重要性,通过设置监控指标、收集分析用户反馈来优化系统,助力开发者打造高效电商智能客服。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 7814

【HDU】1559 最大子矩阵 (二维前缀和,动态规划)

动态规划之二维前缀和 题目 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。 输入 输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的...

A's World 681

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

前缀和----求最大子矩阵和

本文部分借鉴源于大佬的博客:http://www.cnblogs.com/mrclr/p/8423136.html%20 现在有一个问题,有一个一维数组,求它的最大区间和。 我们可以利用贪心的思想,先将这个数组前缀和处理,所以我们可以得到区间和为 sum[L—R] = sum[R] - sum[L-1];因此,我们可以一边枚举R一边去找最小值,取这个区间和去和答案判断...

weixin_30810583的博客 487

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【HDU - 1559】最大子矩阵 (二维前缀和裸题)

题干: 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。 Input 输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0&lt;m,n&lt;1000 AND 0&lt;x&lt;=m AND 0&lt;y&lt;=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的正整数。...

xuanweiace的博客 1226

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ACM HDU 1559 最大子矩阵

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1559 这道题 挺好的,当时想出解法的时候已经比较迟了。还是平时看得少。 把行与列都进行压缩。ans[i][j]存储的是前面所有元素的和。比较的时候注意条件的限制。我个人认为题目中并没有讲清楚谁大谁小,所有都有可能。 但是这道题数据太水了!!!不管是第一个条件还是第二个条件单独放都可以A...

ddqb3235的博客 178

DP求一类最大子矩阵

HDU 最大子矩阵 1559  利用容斥原理求出(0,0)到(i,j)的矩阵里的值的和,类似一维的前缀和。 #include #include const int maxn=1001; int dp[maxn][maxn]; int main () { int

jxy859的专栏 673

hdu 1559(最大子矩阵)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1559 思路:感觉就是1081这题差不多,但就是加了一个限制条件。。。 View Code 1 #include 2 #include 3 const int N=1010; 4 using namespace std; 5 6 int map[N][N]; 7

几百个教授的专栏 366

构造识别所有活前缀的dfa_前缀和与差分

前缀和是一种极其优秀的线性结构,也是一种重要的思想,能极大地降低区间查询的时间复杂度。前缀和数组的下标一般从 开始。1. 一维前缀和1.1 原理问题描述:假设有一串长度为 的序列 ,给出 次询问,每次询问给出 两个数,求区间 的和。如果使用暴力解法,每次都遍历一遍给出的区间,计算出答案,这样时间复杂度会达到 ,极有可能会 TLE。使用前缀和来做的话,能将时间复杂度降到 ,极大地减少了时间...

weixin_39759989的博客 932

HDU 1559 最大子矩阵 (DP)

题目地址:HDU 1559 构造二维前缀和矩阵。即矩阵上的点a[i][j]表示左上方的点为(0,0),右下方的点为(i,j)的矩阵的和。然后枚举每个矩阵的左上方的点,由于矩阵的长和宽是固定的,那么这个矩阵实际上也已经固定了。此时这个矩阵的和用公式: sum=a[i+x-1][j+y-1]-a[i+x-1][j-1]-a[i-1][j+y-1]+a[i-1][j-1]; 取最大值就可以了。

scf0920 1385

HDU1559(二维前缀和模板 Java&C++)

HDU1559(二维前缀和模板) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1559 Problem Description 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。 Input 输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来

马克菠萝包ଲ的博客 287
上一篇: Color the ball(HDU - 1556,前缀和)
下一篇: A/B(HDU - 1576,费马小定理 + 乘法逆元)
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值