HDU - 6957 - Maximal submatrix( 单调栈 )

【Mac+CLion+STM32+JLink】从零到一:在macOS上构建高效STM32开发与调试工作流 本文详细介绍了在macOS上使用CLion、STM32CubeMX和JLink搭建高效STM32开发与调试工作流的完整指南。从环境准备、CLion深度配置到STM32CubeMX工程实战,再到JLink烧录避坑和串口调试技巧,帮助开发者快速掌握Mac平台下的嵌入式开发全流程。 阅读详情
题目链接:点击进入
题目

在这里插入图片描述

题意

一个 n * m 的矩阵,让你找出每列非递减的最大的子矩阵。

思路

跟找全 1 矩阵很相似,记录一个 h 数组,对于每个位置,记录它所在这列它的上方最长非递减序列的长度( 算上它本身 ),这个 h 数组,就相当于宽为 1 的 每列非递减 的子矩阵的高度,剩下的就是遍历每一行,用单调栈求每一行的最大每列非递减子矩阵。

代码
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e8+10;
const int mod=998244353;
const double eps=1e-9;
const int N=5e3+10;

//inline int read()
//{
//    int k = 0, f = 1 ;
//    char c = getchar() ;
//    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
//    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
//    return k * f ;
//}

int t,n,m,top,a[2010][2010],h[2010],b[2010];
stack<int>st;

int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        int ans=0;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                scanf("%d",&a[i][j]);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(a[i][j]>=a[i-1][j])
                    h[j]=h[j]+1;
                else
                    h[j]=1;
                b[j]=h[j];
            }
            b[m+1]=-1;
            for(int j=1;j<=m+1;j++)
            {
                if(st.empty()||b[j]>=b[st.top()])
                    st.push(j);
                else
                {
                    while(st.size()&&b[j]<b[st.top()])
                    {
                        top=st.top();
                        st.pop();
                        int tmp=(j-top)*b[top];
                        ans=max(ans,tmp);
                    }
                    st.push(top);
                    b[top]=b[j];
                }
            }
        }
        printf("%d\n",ans);
        for(int i=1;i<=m;i++) h[i]=0;
    }
    return 0;
}
Triton推理服务器实战:如何为PaddleOCR的ONNX模型配置动态批处理和并发推理 本文详细介绍了如何使用Triton推理服务器为PaddleOCR的ONNX模型配置动态批处理和并发推理,以提升GPU利用率和推理性能。通过实战案例和参数调优指南,帮助开发者解决高并发场景下的性能瓶颈问题,实现从实验室到生产环境的高效部署。 阅读详情

相关推荐

SwinIR实战:从环境搭建到模型训练的全流程解析

本文提供了SwinIR超分辨率模型从零开始的全流程实战指南。详细解析了基于PyTorch和Anaconda的环境搭建、数据准备与配置文件修改、训练启动与常见错误排查(如张量尺寸不匹配),以及模型评估方法,帮助读者高效部署并训练SwinIR模型。

weixin_28224217的博客 319

HDU6957 Maximal submatrix(DP/悬线法)

题目链接:HDU6957 Maximal submatrix 题目描述: ​ 给定一个 n∗mn*mn∗m 的矩阵,求面积最大的子矩阵,对于该矩阵,满足每列元素是个非递减序列。 ​ 输入数据格式为,第一行输入测试样例组数 TTT​​​​​​​。每组数据首先输入两个整数 nnn​​​​​ 和 mmm​​​​,表示矩阵的大小。接下来 nnn​​​​ 行,每行输入 mmm​​​ 个整数 vijv_{ij}vij​​​,表示第 iii 行 第 jjj​ 列的元素​。其中,1≤n,m≤2∗1031\le n,m

YounCGY的博客 255

基于Android13的系统启动流程分析(三)之FirstStageMain阶段

init进程是Android系统中用户空间的第一个进程,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建zygote(孵化器)和属性服务等。init进程是由多个源文件共同组成的,这些文件位于源码目录system/core/init1. Bootloader 引导当按下设备电源键时,最先运行的就是 bootloader(固化在ROM的程序),bootloader 的主要作用就是硬件设备(如 CPU、flash、内存)的初始化并加载到RAM,通过建立内存空间映射,为装载 Linux 内核做好准备,。

q1210249579的博客 5496

HDU 6957 Maximal submatrix(悬线法 || 优先队列 || 单调栈 )

目录问题分析代码 问题 HDU 6957 Maximal submatrix - https://acm.hdu.edu.cn/showproblem.php?pid=6957 分析 悬线法 dp 代码 悬线法【2012MS】 #include<bits/stdc++.h> using namespace std; #define MXN 2010 int n, m, ans; int v[MXN][MXN], h[MXN][MXN], l[MXN][MXN], r[MXN][MX

jpphy0的博客 532

手把手教你用STM32F103的IO口模拟XY2-100协议驱动数字振镜(附Keil O3优化代码)

本文详细介绍了如何使用STM32F103的IO口模拟XY2-100协议驱动数字振镜,包括协议解析、偶校验算法、寄存器级优化及Keil O3编译下的性能调优。通过硬件配置、核心代码实现和优化技巧,帮助开发者实现高速二维偏转控制,适用于工业激光雕刻和精密定位系统。

weixin_42527401的博客 260

如何利用GMS构建地下水数值模拟模型?

第一步:点图中三维网格的图标然后点Grid→Create Grid这个界面是用于创建一个有限差分网格的设置窗口。它允许你定义网格在三维空间中的范围、分辨率以及其他相关属性。这个界面提供了一个直观的方式来定义一个三维的有限差分网格,你需要指定每个维度上的范围、划分的单元格数量,以及一些控制单元格大小分布和网格方向的参数。这个网格通常会被用于数值模拟,例如地下水流模拟。在点击 "OK" 之前,请务必仔细检查所有参数是否符合你的建模需求。1. X-Dimension (X 轴维度)2. Y-Dimension (

weixin_44259522的博客 2093

HDU6957 Maximal submatrix (单调栈)

题目链接: Maximal submatrix 大致题意 给定一个n×mn \times mn×m的矩阵, 求满足要求的最大面积子矩阵. 要求: 该子矩阵的每一列从上向下看不递减. 解题思路 ➡️题目弱化版点这里⬅️ 单调栈 如果你做过了题目的弱化版, 你会发现这个题实际上是一个二维版本. 我们需要对于每一行都求一次答案即可. AC代码 #include <bits/stdc++.h> #define rep(i, n) for (int i = 1; i <= (n); ++i) usi

Fau的博客 250

手把手教你搞定JBI投稿:从Statement of Significance到Declaration Statement的保姆级避坑指南

本文提供了一份详细的JBI投稿指南,重点解析Statement of Significance和Declaration of Interests的撰写技巧,帮助研究者避开常见格式陷阱。通过实战案例和检查清单,确保投稿符合JBI的学术严谨性和临床转化价值要求,提升稿件通过率。

weixin_29278805的博客 620

HDU 6957.Maximal submatrix

Issue: Thinking: 题目要求最大子矩阵的面积,就可以把每一行看做是直方图中最大矩形问题,这题马氏风格,暴力枚举每一行 把每一行中非递减的“矩形”用h[][]数组存下来,这样每一行都是一个直方图中最大矩形问题 问题转化为直方图中最大矩形问题,依次枚举每一列,算出每一列能够向左和向右能够到达的最大长度分别用l[]和r[]数组记录,这一步就可以用单调栈来优化,时间复杂度为O(n) 每一行的公示就是(h[i] * (l[i] + r[i] - 1)) 最后,对每一个结果取max 别忘了多组数据测试

qq_46907547的博客 344

Linux | Ubuntu18.04安装RTX 4060显卡驱动完整教程

本节详细介绍了如何在ubuntu18系统安装4060显卡的驱动。

九七的博客 5159

【C2000系列DSP的双向DC-DC电源】基于TMS320F28034的DC-DC项目开发流程

理解DC-DC 双向电源(基于 TMS320F28034)的开发流程,需要从功能拆解、开发步骤、验证 / 测试项

昔时扬尘处 323

hdu6957

#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[2010][2010]; ll b[2010][2010]; ll h[2222]; ll que[22222]; signed main() { ll t; scanf("%d",&t); while(t--) { ll n,m; scanf("%d%d",&n,&a...

weixin_50904510的博客 190

哨兵1号回波数据(L0级)包格式解析与成像参数提取

提取哨兵1号数据包的辅助数据、回波数据、定标数据。matlab代码在文末

3124

悬线法,单调栈解决 HDU6957 Maximal submatrix

悬线法可以用来解决最大子矩阵等问题 模板题目:https://www.luogu.com.cn/problem/SP1805 大意:在一条水平线上有n个宽为1的矩形,求包含于这些矩形的最大子矩形面积。 代码 /* l[i]:为当前位置i的悬线能扩展到的最左边的位置,初始为i ,我们需要进一步判断还能不能进一步往左扩展。 如果当前l[i]==1 ,则已经扩展到了边界,不可以。 如果当前a[i] > a[l[i] - 1],则从当前悬线扩展到的位置不能再往左扩展了。 如果当前a[i] <= a[l[

glide的博客 240

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HDU 6957 Maximal submatrix (单调栈,柱形图最大矩阵面积)

题目:Problem - 6957 (dingbacode.com) 题目大意是给出一个矩阵,找出面积最大的子矩阵,这个子矩阵的每一列上的数字都要是非递减的。 直接处理非常麻烦,所以先进行预处理,提前处理出每一列(第j列)上以第i个开始的非递减数列长度b[i][j],再用扫描线从1到n扫一遍,处理出以第i行为底边的最大矩阵面积,这样就把题目转变为求柱形图的最大矩阵面积了。 然后用单调栈维护答案即可。 代码: #include<iostream> #inc...

qq_53333451的博客 233

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

悬 线 法

悬线法:求满足某条件的极大子矩阵,比如“面积最大的长方形、正方形”“周长最长的矩形等等”。 一般用于求 n ✖ m 的01矩阵中面积最大全为1的子矩阵的面积,时间复杂度O(nm) 例题 P1169-ZJOI2007-棋盘制作 P4147 玉蟾宫 P2701 - USACO5.3 - 巨大的牛棚Big Barn P1387 最大正方形 ...

cosx_的博客 315

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

H - Maximal submatrix HDU - 6957

H - Maximal submatrix HDU - 6957 题意: 给定一个n行m列的矩阵,求每列上面积不减的最大子矩阵 对于每个测试用例,打印一个表示最大子矩阵的整数 题解: 要求求一个最大面积的满足每列非递减的矩阵,这怎么想? 我们可以转化成01矩阵,每一个位置1表示该位置比上面一位大,然后求最大的01矩阵就可以了,单调栈做法时注意0的话可以作为矩阵的开始,详细看看代码 代码: 单调栈做法 #include<bits/stdc++.h> #define debug(a,b) print

qq_35975367的博客 527

HDU Maximal submatrix(单调栈/悬线法)

题意:输入一个n行m列的矩阵,找到每一列非递减的最大子矩形面积。 题解: (1)首先预处理出自该位置向上满足性质的数的个数,记为 h[i][j] (2)对于每行 (h[i]) 维护一个单调递增栈,所有元素进栈和出栈一次,每个元素出栈时更新最大的矩形面积。 (3)为了能够更新最大的矩形面积,我们需要在栈内记录两个数据——元素的高度 h[i][j] 和它到栈中上一个元素的宽度差。 (4)元素出栈时,因为高度逐渐递减,故记width 为当前已经弹出的元素的宽度和. ...

asiip的博客 314

HDU6957 Maximal submatrix(DP)

题目链接 转化一下,标记a[i][j]>=a[i-1][j]的位置为1 ,代表可以取。然后求最大全1子矩阵面积。用单调栈/悬线法dp 都是N*M复杂度。 对于单调栈,我们用一个m+1 制造一个虚拟矩阵,为了防止RE以及清空栈。 每次出栈更新的是比当前连续1数目多的那个位置(相当于以第i行作为最底层,用h[j] 标记第j列中当前已经连续的高度) 更新范围为【栈顶,当前)以栈顶为高度的矩阵面积 ll a[2010][2010]; ll b[2010][2010]; ll h[2222]; ll

weixin_45948940的博客 304

求01矩阵最大面积Maximal submatrix HDU - 6957

Given a matrix of n rows and m columns,find the largest area submatrix which is non decreasing on each column Input The first line contains an integer T(1≤T≤10) representing the number of test cases. For each test case, the first line contains two integ

qq_53680405的博客 491

2021HDU多校训练赛(1)1008

2021HDU多校训练赛(1)1008(HDU6957)Maximal submatrix 链接: HDU6957 题目大意: 给你一个矩阵,输出最大的列不下降的子矩阵。 题解: 题目经预处理每个点的最长不下降序列之后可以转化为求直方图中的最大矩形 (该图片源链接来自@ojzha_gcx 原文链接) 求直方图最大矩形可以使用单调栈前后跑两次,也可以使用悬点法dp,代码如下 #include<bits/stdc++.h> #define ll long long using namespace

qq_52402041的博客 348

hdu 6957 Maximal submatrix

#include<bits/stdc++.h> using namespace std; const int M = 2005; int l[M][M],r[M][M],h[M][M],v[M][M];: int t,n,m,temp; int main (){ int ans; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); for(int i = 1;i<=n;i++){ for(int j

123mutouren 216

Imprecise Computer - ( 思维 / 递推 )

题目描述 The Imprecise Computer (IC) is a computer with some structural issue that it can compare two integers correctly only when their difference is at least two. For example, IC can always correctly answer ‘4 is larger than 2’, but it can answer either ‘2 i

Cosmic_Tree的博客 1528

Going Home - ( 抽屉原理 )

题目链接:点击进入 题目 题意 给一个长度为 n 的数组,问是否存在 x , y , z , w ( 四个数互不相同 ) ,满足 a [ x ] + a [ y ] = a [ z ] + a [ w ] ; 思路 暴力枚举 x 与 y ,得出和值 C ,2 <= C <= 5e6。 有 n ^ 2 对( x , y ),和值 C 大约有 5e6 种取值,当 n ^ 2 > 5e6 时,根据抽屉原理,必有一个和值对应两个以上的( x , y )对,但是,此时可能对应的( x , y )

Cosmic_Tree的博客 1407

ABC Conjecture(大数分解)-2020ccpc(威海)

题意 给你一个范围是 [ 1 , 10 ^ ​18​​ ] 的数,让你求这个数能不能被一个 素数的平方 整除(即 c % ( i * i ) == 0) 思路1 用大数分解模板,将 c 分解得到 c 的所有质因子,然后去重(模板得到的是无序且没去重的),然后将所有质因子相乘,得到 tmp , 如果 tmp 跟 c 相等,说明 c 不能被素数的平方整除,否则可以。 (记得特判 c == 1 的情况!!! c = 1 是 “ no ” ) 代码1 #include<iostream> #incl..

Cosmic_Tree的博客 1335

A Golden Spirit (思维)-2020ccpc(威海)

题意 一座桥,桥两侧各有 n 个人,每个人都想去桥对面休息 x 分钟后再返回(必须休息够 x 分钟才能被背回去),问你满足所有人的愿望,最少需要多少分钟(你背一个老人过一次桥需要 t 分钟) 思路 最优的办法是(前 2 n 次)每一次过桥先背一个人去对面休息,等到所有(2 n个)人都到了(相对于自己一开始的位置的)桥对面,然后,这时候自己应该在自己最开始的位置,而此时每个人的休息所剩时间应该是: x x-2t x-4t … x-2*(n-1)t | x-t x-3t x-..

Cosmic_Tree的博客 1054
上一篇: 2021牛客暑期多校训练营1 A - Alice and Bob ( 暴力预处理sg )
下一篇: Largest Submatrix of All 1’s - ( 单调栈 - 求最大全1矩阵 )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值