题目传送门

前置知识

单调栈

简化题意

在一个 \(n \times n\) 的正方形内找到最大的由 \(0\) 组成的子矩形的面积。

解法

令 \(f_{i,j}(1 \le i,j \le n)\) 表示从 \((1,j)\) 到 \((i,j)\) 中以 \((i,j)\) 结尾的均为 \(0\) 的子串长度,即 \((i,j)\) 上面可延伸的最大距离(子矩形的长)。

用单调栈的第一维存储子矩形的长,第二维存储子矩形的宽。考虑依次枚举每一行和每一列,进行出入栈的操作。当枚举到 \((i,j)\) 的位置时,记录子矩形的宽 \(num\),有如下操作:

  • 对于栈中原来的元素中大于当前的长 \(f_{i,j}\),要将其弹出栈,计数器 \(num\) 加 \(1\)。

    • 子矩形的宽为弹出栈的元素个数。
    • 其所形成的子矩形面积为 $num \times $ 栈中当前的元素。
  • 将所得到的长 \(f_{i,j}\) 和宽 \(num\) 入栈。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sort stable_sort
#define endl '\n'
int f[2001][2001];
int main()
{
int n,pd,i,j,ans=0,num;
cin>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>pd;
if(pd==0)
{
f[i][j]=f[i-1][j]+1;
}
}
}
for(i=1;i<=n;i++)
{
stack<pair<int,int> >s;
s.push(make_pair(f[i][1],1));
for(j=2;j<=n;j++)
{
num=0;
while(s.empty()==0&&s.top().first>f[i][j])
{
num+=s.top().second;
ans=max(ans,num*s.top().first);
s.pop();
}
s.push(make_pair(f[i][j],num+1));
}
num=0;
while(s.empty()==0)
{
num+=s.top().second;
ans=max(ans,num*s.top().first);
s.pop();
}
}
cout<<ans<<endl;
return 0;
}

后记

多倍经验:P4147 | UVA1330

P5943 [POI2002] 最大的园地 题解的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. 【题解】洛谷P1463 [POI2002][HAOI2007] 反素数(约数个数公式+搜索)

    洛谷P1463:https://www.luogu.org/problemnew/show/P1463 思路 约数个数公式  ai为质因数分解的质数的指数 定理: 设m=2a1*3a2*...*pak ...

  3. 2953: [Poi2002]商务旅行

    2953: [Poi2002]商务旅行 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 8  Solved: 8[Submit][Status] Desc ...

  4. BZOJ 2976: [Poi2002]出圈游戏 HDU 5668 CRT

    2976: [Poi2002]出圈游戏 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2976 Description Input 中第一 ...

  5. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  6. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  7. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  8. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  9. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  10. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

随机推荐

  1. mysql too many connections 解决

    本文为博主原创,转载请注明出处: 由于在开发过程中,很多人连接共同一个数据库,在工具连接到mysql, 并执行sql时,提示 too many connections ,这是由于数据库连接太多,以致于 ...

  2. Python-函数-算术函数

    #python-函数-算术函数 #(1)加减乘除 #加法 add(),减法 subtract(),乘法 multiply(),除法 divide() #作用:数组间的加减乘除 import numpy ...

  3. DBA实战面试题(一)

    数据库面试测试题(一) 简述当前主流RDBMS软件有哪些?开源且跨平台的数据库软件有哪些? 参考答案 当前主流的数据库服务器软件有: Oracle . DB2 . SQL SERVER .MySQL ...

  4. [转帖]Spring为啥不推荐使用@Autowired注解?

    https://my.oschina.net/u/5079097/blog/5289666   引言 使用IDEA开发时,同组小伙伴都喜欢用@Autowired注入,代码一片warning,看着很不舒 ...

  5. [转帖]centos7 firewall-cmd主机之间端口转发

    目录 1. firewalld 1.1 firewalld守护进程 1.2 控制端口/服务 1.3 伪装IP 1.4 端口转发 2. 案例 2.1 配置ServerA 2.2 安装nginx测试 (可 ...

  6. [转帖]一个故事看懂CPU的TLB

    https://www.cnblogs.com/xuanyuan/p/15347054.html Hi,我是CPU一号车间的阿Q,还记得我吗,真是好久不见了- 我所在的CPU是一个八核CPU,就有八个 ...

  7. [转帖]nginx 启动、重启、关闭命令详解

    https://www.jianshu.com/p/d70006f18a6d 作者:Gakki nginx 命令详解 输入命令:nginx -h   nginx -h -?,-h:查看帮助 -v:显示 ...

  8. 基于Prometheus和Grafana监控redis,Oracle,mysql,pg以及sqlserver的方法总结

    基于Prometheus和Grafana监控redis,Oracle,mysql,pg以及sqlserver的方法总结 简单记录一下方法 1.获取相应的exporter 1. redis docker ...

  9. charles如何抓取https请求

    我们都知道charles下载安装后只能抓取http请求,要想抓取https请求需要下载安装证书 下面介绍pc端和移动端的配置方法 一.pc端(win) 1.打开charles,点击help>SS ...

  10. fiddler如何抓取https请求

    pc端browse 1.打开下载好的fiddler,点击tools选择options后进入https tab下,勾选Decrypt  HTTPS CONNECTS 和Ignore server cer ...