Code[VS]1159 最大全0子矩阵
原题链接:http://codevs.cn/problem/1159/
题目描述 Description
在一个0,1方阵中找出其中最大的全0子矩阵,所谓最大是指O的个数最多。
输入描述 Input Description
输入文件第一行为整数N,其中1<=N<=2000,为方阵的大小,紧接着N行每行均有N个0或1,相邻两数间严格用一个空格隔开。
输出描述 Output Description
输出文件仅一行包含一个整数表示要求的最大的全零子矩阵中零的个数。
样例输入 Sample Input
5
0 1 0 1 0
0 0 0 0 0
0 0 0 0 1
1 0 0 0 0
0 1 0 0 0
样例输出 Sample Output
9
题解
悬线法模板题。
对于每个点,我们维护一下该点向上最大能扩展多少,以及这个点的悬线向左向右能平移多少,然后枚举所有悬线求最大子矩形即可,复杂度O(nm)O(nm)O(nm)。
代码
#include<bits/stdc++.h>
using namespace std;
const int M=2e3+5;
int n,h[M][M],l[M][M],r[M][M],sq[M][M];
void in()
{scanf("%d",&n);for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)scanf("%d",&sq[i][j]);
}
void ac()
{for(int i=1;i<=n;++i){for(int j=1;j<=n;++j)h[i][j]=sq[i-1][j]?1:h[i-1][j]+1,l[i][j]=sq[i][j-1]?1:l[i][j-1]+1;for(int j=n;j>=0;--j)r[i][j]=sq[i][j+1]?1:r[i][j+1]+1;}int ans=0;for(int i=1;i<=n;++i)for(int j=1;j<=n;++j){if(sq[i][j]){h[i][j]=l[i][j]=r[i][j]=0;continue;}if(i>1&&!sq[i-1][j])l[i][j]=min(l[i][j],l[i-1][j]),r[i][j]=min(r[i][j],r[i-1][j]);ans=max(ans,(l[i][j]+r[i][j]-1)*h[i][j]);}printf("%d",ans);
}
int main()
{in();ac();return 0;
}
Code[VS]1159 最大全0子矩阵相关推荐
- cv1159 最大全0子矩阵(极大子矩阵)
题目描述 Description 在一个01方阵中找出其中最大的全0子矩阵,所谓最大是指0的个数最多. 输入描述 Input Description 输入文件第一行为整数N,其中1<=N< ...
- 最大全0/1子矩阵的探究
最大全0/1子矩阵的探究 by MedalPluS [问题模型] 给定一个n*n的矩阵,求矩阵中面积最大的一个值全是0或1的子矩阵 [分析] (这里n*n完全可以改为n*m,但由于种种原因,等下代码里 ...
- 最大全1子矩阵的两种解法(例题:City Game HDU - 1505)
以前牛客多校遇到过两道,都没做出来,这次来系统性的补习一下. 例题:City Game HDU - 1505 题意:给你一个矩阵,求最大全1子矩阵,最后结果乘以3... 全1矩阵可以参考下图 这个框就 ...
- nodejs error Windows_NT 6.1.7601 21 error code ELIFECYCLE 22 error angular-adminlte-plugin@0.1.0
报错日志: 17 error Windows_NT 6.1.7601 18 error argv "D:\\Program Files\\nodejs\\node.exe" &qu ...
- Code Complete《代码大全》读书笔记
最近拜读了 Code complete<代码大全>,这部大块头确实经典,涉及到了软件开发的方方面面.有点后悔没有早些阅读,值得推荐给还没读过的朋友.它并不是针对某种语言的武林秘籍,应该可以 ...
- 【leetcode】85. Maximal Rectangle 0/1矩阵的最大全1子矩阵
1. 题目 Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1 ...
- CCS(Code Composer Studio) 10.2.0的下载和安装(最新教程)
CCS(Code Composer Studio)是一整套用于开发和调试嵌入式应用的工具,包含适用于每个TI器件系列的编译器.源码编译器.项目构建环境.调试器.描述器.仿真器以及多种功能. 本文将介绍 ...
- 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一
好吧,现在我们假设你已经安装好了VS Code开发工具..Net Core 2.0预览版的SDK dotnet-sdk-2.0.0(注意自己的操作系统),并且已经为VS Code安装好了C#扩展(在V ...
- Visual Studio Code预览版Ver 0.3.0试用体验
当你开始阅读这篇文章时,请先不要把Visual Studio Code和.net.Windows联想到一起,因为VS Code是一个跨平台,支持30多种语言的开箱代码编辑器.不管你是.Net.Java ...
- 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之三(配置文件读取)
干了一天的活,还有点时间,给兄弟们写点东西吧. 大家有没有发现一个问题?那就是在.Net Core的MVC项目里面,没有.config文件了!!!同志们,没有config文件了啊,这样搞,我以后要做些 ...
最新文章
- 文化部随机抽查50家网络表演平台 看看有没有那种内容
- java任务分解_Spark如何将切片分解为任务/执行者/工作者?
- 使用Notepad++工具查看文件的十六进制
- alipay html5 app,H5App支付宝开发详解
- C语言 typedef 和 define 区别 - C语言零基础入门教程
- zk可实现分布式锁,Redis也可实现,之间有什么区别?
- sql文字转换全拼_Mysql中文汉字转拼音的实现(每个汉字转换全拼)
- 信息安全方面优秀论文
- 建立一个学生的简单信息表 c语言,简单的学生信息表
- 笔记—R语言做相关气泡图
- k8s中通过Jenkins蓝绿/灰度发布微服务
- 如何在没有密码的情况下解锁 iPhone
- 重庆java培训机构排名榜
- 企业即时通讯软件的五大作用
- 我的Android前生今世之缘-学习经验-安卓教程(六)
- Qt平台编写的五子棋单机版
- 微信支付智联时代 微信支付场景介绍
- uniapp项目实现扫描二维码和NFC识别功能
- 监控软件自动发现功能和监控软件分布式监控配置
- SIZE SSIZE
热门文章
- 数字值太大,plsql显示不全的设置
- jsp java ldquo_添加jsp · yayaangel/java201521123103 - Gitee.com
- 58java面试题_58到家,java开发实际面试题
- Windows10安装 virtualbox虚拟机
- python基础学习笔记1
- 336 Palindrome Pairs 回文对
- OD调试器调试Delphi程序按钮事件断点方法
- js实现发送验证码倒计时按钮
- 一步步学习SPD2010--附录B--创建新的批准流程
- dockerfile安装jenkins 并配置构建工具(node、npm、maven、git)