传送门←

先DP处理出每点向上最多扩展出的0的个数
再用二维单调栈处理最大矩形
其实就是对每一行跑一遍单调栈……

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<stack>
using namespace std;
const int MAXN = 2000 + 50;
int map[MAXN][MAXN],f[MAXN][MAXN],dp[MAXN][MAXN];
int n,ans;
struct zt
{int h,l,w;
};
stack <zt> q;
void solve(int k)
{for(int i = 1;i <= n;i ++){int h = dp[k][i];if(!q.empty()){zt u = q.top();zt p = u;if(u.h < h){q.push((zt){h,i,i - p.l});//continue;}while(u.h >= h){q.pop();ans = max(ans,max(u.h * (i - u.l + u.w - 1),h * (i - u.l + u.w)));//if(q.empty()){ans = max(ans,h * (i - u.l + u.w));break;}p = u;u = q.top();}q.push((zt){h,i,i - p.l + p.w});}else q.push((zt){h,i,1});ans = max(ans,h);}while(!q.empty()){zt u = q.top();q.pop();if(q.empty()){ans = max(ans,u.h * u.w);return;}zt x = q.top();ans = max(ans,x.h * (u.l - x.l + x.w));}
}
int main()
{scanf("%d",&n);for(int i = 1;i <= n;i ++)for(int j = 1;j <= n;j ++)scanf("%d",&map[i][j]);for(int i = 1;i <= n;i ++){for(int j = 1;j <= n;j ++)dp[j][i] = !map[j][i] * (dp[j - 1][i] + 1);}for(int i = 1;i <= n;i ++){solve(i);}printf("%d",ans);
}

tips:
1、明确宽度是否包括端点
2、宽度标志着该元素栈前元素实际位置→该元素位置,就是包括所有该元素前因不满足单调性而被弹出的元素宽度(栈为单调递增栈,故前面不满足弹出的元素一定是高度大了的,所以一定可以按照当前高度计算为矩形);
3、思路要清楚……至少要想清楚自己在打什么……OTZ

[codevs1159]最大全零子矩阵相关推荐

  1. MATLAB命令大全和矩阵操作大全

    一.矩阵的表示 在MATLAB中创建矩阵有以下规则: a.矩阵元素必须在"[ ]"内: b.矩阵的同行元素之间用空格(或",")隔开: c.矩阵的行与行之间用& ...

  2. Leetcode Maximal Rectangle

    Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and ...

  3. 最大全0/1子矩阵的探究

    最大全0/1子矩阵的探究 by MedalPluS [问题模型] 给定一个n*n的矩阵,求矩阵中面积最大的一个值全是0或1的子矩阵 [分析] (这里n*n完全可以改为n*m,但由于种种原因,等下代码里 ...

  4. cv1159 最大全0子矩阵(极大子矩阵)

    题目描述 Description 在一个01方阵中找出其中最大的全0子矩阵,所谓最大是指0的个数最多. 输入描述 Input Description 输入文件第一行为整数N,其中1<=N< ...

  5. 最大全1子矩阵的两种解法(例题:City Game HDU - 1505)

    以前牛客多校遇到过两道,都没做出来,这次来系统性的补习一下. 例题:City Game HDU - 1505 题意:给你一个矩阵,求最大全1子矩阵,最后结果乘以3... 全1矩阵可以参考下图 这个框就 ...

  6. 在matlab表示特殊矩阵,MATLAB特殊矩阵以及矩阵转置

    特殊矩阵 通用特殊矩阵 zeros函数:产生全0矩阵,即零矩阵. ones函数:产生....1矩阵,即幺矩阵. eye函数:产生对角线为1的矩阵,当矩阵是方正时,得到单位矩阵. rand函数:产生(0 ...

  7. 2019牛客第八场A All-one Matrices(单调栈)

    链接:https://ac.nowcoder.com/acm/contest/888/A 题目描述 Gromah and LZR entered the great tomb, the first t ...

  8. [2021-09-02 contest]CF1251C,可达性统计(bitset优化dp),Boomerang Tournament(状压dp),小蓝的好友(mrx)(treap平衡树)

    文章目录 CF1251C Minimize The Integer acwing164:可达性统计 Facebook Hacker Cup 2016 Round 1 Boomerang Tournam ...

  9. java 1.7 可变参数,JDK1.7新特性(2):异常和可变长参数处理

    异常 jdk1.7对try--catch--finally的异常处理模式进行了增强,下面我们依次来看增强的方面. 1. 为了防止异常覆盖,给Throwable类增加了addSuppressed方法,可 ...

最新文章

  1. Tensorflow中tf.ConfigProto()详解
  2. css删除线_前端删除文字贯穿线的方法有哪些
  3. jsp中如何显示mysql数据库数据类型_jsp中如何以表格形式显示数据库中一个字段的数据?...
  4. 正直摄影方式的精度估算式_[公务员考试]数量关系——估算法与直除法
  5. Kingbase金仓查看表空间占用率
  6. Java编程入门(2.1):基础Java应用程序
  7. 更换 Centos 中的 yum 源
  8. 【渝粤教育】国家开放大学2018年春季 8659-22T计算机平面设计(1)(2) 参考试题
  9. 美国三大股指周五收高 费城半导体指数逆势微跌0.33%
  10. 海康威视4200服务器显示资源不足,硬盘录像机提示“资源不足”是什么原因 -
  11. Android专业DJ,著名音乐游戏《DJ英雄》登陆Android Market
  12. php 7.1 国内下载地址,PHP下载|PHP for windowsV7.1.4官方版
  13. I/O Request Packet
  14. el-dialog内的el-table实现自适应高度
  15. Python实现BT种子转化为磁力链接【实战】
  16. 【allegro 17.4软件操作保姆级教程八】布线操作基础之三
  17. 如何去掉 APFS 宗卷 • APFS(加密)的加密功能
  18. Android Gson在Kotlin data class中的使用
  19. c3p0连接池使用完毕后连接返还
  20. 【产品经理】产品体验报告的思路

热门文章

  1. 台式电脑 计算机管理在哪里,设备管理器在哪 怎么打开设备管理器?
  2. 相机拍出来的图片有“水波纹”的原因
  3. 关于数加服装ERP软件/系统的功能模块与应用的介绍
  4. Selenium-淘宝登录
  5. c语言:1000瓶水,有一瓶是有毒的,现共有10只老鼠,怎么判断毒水?
  6. 《ThinkPHP 5实战》4个实战开发案例可从代码仓库下载
  7. matlab jpg合成gif,用MATLAB将照片合成视频或者GIF图片、以及Photoshop制作GIF图片
  8. 网吧服务器点歌系统,网吧点歌系统(网吧点歌曲软件)
  9. 和Timesten有个约会--Timesten技术专栏系列(一)
  10. 信息论 | Shannon编码MATLAB实现