题目链接:https://ac.nowcoder.com/acm/contest/883/F

题意:给定n×n的矩阵,求最大子矩阵使得子矩阵中最大值和最小值的差值<=M。

思路:先看数据大小,注意题目说所有样例的N^3不超过25e7,意思就是我们可以用O(n^3)过题。

   最大子矩阵第二场出现过,做法是枚举上下边界实现降维,同时我们维护每一列的最大值最小值,然后枚举右边界,这时候复杂度已经为O(n^3)。那么左边界怎么确定呢?我们用两个单调队列维护子矩阵的最大值最小值,根据题目条件确定左边界,注意代码37、38行是if不是while(我想了好久。。QAQ),因为最多只需要从队首出一次(也就是将head+1,这个仔细想想就明白),用while没必要,而且while会出现段错误,如果这时候l=k,加一之后l=k+1,head1会超出tail,而里面的值不确定,可能导致死循环。

   总复杂度为O(n^3)。

AC代码:

#include<cstdio>
#include<algorithm>
using namespace std; const int maxn=; int T,n,M,l,head1,tail1,head2,tail2,ans;
int a[maxn][maxn],Ma[maxn],Mi[maxn];
int q1[maxn],q2[maxn]; int main(){
scanf("%d",&T);
while(T--){
ans=;
scanf("%d%d",&n,&M);
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
scanf("%d",&a[i][j]);
for(int i=;i<=n;++i){
for(int k=;k<=n;++k)
Ma[k]=Mi[k]=a[i][k];
for(int j=i;j<=n;++j){
for(int k=;k<=n;++k){
Ma[k]=max(Ma[k],a[j][k]);
Mi[k]=min(Mi[k],a[j][k]);
}
l=,head1=head2=,tail1=tail2=;
for(int k=;k<=n;++k){
while(tail1>=head1&&Ma[q1[tail1]]<=Ma[k])
--tail1;
while(tail2>=head2&&Mi[q2[tail2]]>=Mi[k])
--tail2;
q1[++tail1]=k;
q2[++tail2]=k;
while(l<=k&&Ma[q1[head1]]-Mi[q2[head2]]>M){
++l;
if(q1[head1]<l) ++head1;
if(q2[head2]<l) ++head2;
}
ans=max(ans,(j-i+)*(k-l+));
}
}
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. Cookie和Session的总结
  2. CentOS 7.x设置自定义开机启动,添加自定义系统服务
  3. Linux命令学习总结:dos2unix - unix2dos
  4. Python笔记总结week6
  5. JSP内置对象---请求重定向与请求转发的区别
  6. 使用 CSS3 制作一组超时尚的动画按钮效果
  7. live555编译、移植
  8. SQL Nexus
  9. ThroughRain第二次冲刺(每天更新
  10. Navicat(连接)-1
  11. 数学概念 z
  12. lintcode :Count and Say 报数
  13. C链表操作
  14. 【转】cocos2d-x 开发中使用的一些工具
  15. python 自动化之路 day 03
  16. 【Linux命令】查找命令
  17. WebApi client 的面向切面编程
  18. 异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
  19. DLLHijack漏洞原理
  20. deepfake-faceswap第一篇论文-2016摘要

热门文章

  1. vue等诸多概念记录
  2. k8s权威指南-从xx到oo的实践全接触
  3. 1012 最大公约数和最小公倍数问题 2001年NOIP全国联赛普及组
  4. vscode编辑器
  5. CF1228F One Node is Gone
  6. Vue 新手学习笔记:vue-element-admin 之安装,配置及入门开发
  7. vue添加外部js
  8. Android学习_Selector
  9. Inter IPP 处理图像数据的方法
  10. ARTS打卡计划第三周