把以前的题补补,用悬线求面积第二大的子矩形。我们先求出最大子矩阵的面积,并记录其行三个方向上的悬线长度。然后排除这个矩形,记得还得特判少一行或者少一列的情况

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e3+;
int n;
int mat[maxn][maxn],Left[maxn][maxn],Right[maxn][maxn],up[maxn][maxn]; int main()
{
int T;
T=;
while(T--)
{
int m,n;
cin>>m>>n;
for(int i=;i<m;i++)
{
for(int j=;j<n;j++)
{
char ch;
cin>>ch;
mat[i][j]=ch==''?:;
}
}
int ans=,max2=,l,r,u,b;
for(int i=;i<m;i++)
{
int lo=-,ro=n;
for(int j=;j<n;j++)
{
if(mat[i][j]==)
{
up[i][j]=Left[i][j]=;lo=j;
}
else
{
up[i][j]=i==?:up[i-][j]+;
Left[i][j]=i==?lo+:max(Left[i-][j],lo+);
}
}
for(int j=n-;j>=;j--)
{
if(mat[i][j]==)
{
Right[i][j]=n;ro=j;
}
else
{
Right[i][j]=i==?ro-:min(Right[i-][j],ro-);
if(ans<(up[i][j]*(Right[i][j]-Left[i][j]+)))
{
ans=up[i][j]*(Right[i][j]-Left[i][j]+);
u=up[i][j],l=Left[i][j],r=Right[i][j],b=i;
}
}
}
}
max2=max(max2,u*(r-l));
max2=max(max2,(u-)*(r-l+));
for(int i=;i<m;i++)
{
int lo=-,ro=n;
for(int j=;j<n;j++)
{
if(mat[i][j]==)
{
up[i][j]=Left[i][j]=;lo=j;
}
else
{
up[i][j]=i==?:up[i-][j]+;
Left[i][j]=i==?lo+:max(Left[i-][j],lo+);
}
}
for(int j=n-;j>=;j--)
{
if(mat[i][j]==)
{
Right[i][j]=n;ro=j;
}
else
{
Right[i][j]=i==?ro-:min(Right[i-][j],ro-);
if(u==up[i][j]&&l==Left[i][j]&&r==Right[i][j]&&b==i)
continue;
if(max2<(up[i][j]*(Right[i][j]-Left[i][j]+)))
{
max2=up[i][j]*(Right[i][j]-Left[i][j]+); }
}
}
}
cout<<max2<<"\n";
}
return ;
}

2019牛客多校第二场H题(悬线法)的更多相关文章

  1. 2019 牛客多校第二场 H Second Large Rectangle

    题目链接:https://ac.nowcoder.com/acm/contest/882/H 题目大意 给定一个 n * m 的 01 矩阵,求其中第二大的子矩阵,子矩阵元素必须全部为 1.输出其大小 ...

  2. 2019年牛客多校第二场 H题Second Large Rectangle

    题目链接 传送门 题意 求在\(n\times m\)的\(01\)子矩阵中找出面积第二大的内部全是\(1\)的子矩阵的面积大小. 思路 处理出每个位置往左连续有多少个\(1\),然后对每一列跑单调栈 ...

  3. 2019牛客多校第二场 A Eddy Walker(概率推公式)

    2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...

  4. 牛客多校第二场H Second Large Rectangle 单调栈or悬线法

    Second Large Rectangle 题意 给出n*m的01矩阵,问由1组成的第二大的矩阵的大小是多少? 分析 单调栈(or 悬线法)入门题 单调栈 预处理出每一个点的最大高度,然后单调栈每一 ...

  5. Cutting Bamboos(2019年牛客多校第九场H题+二分+主席树)

    题目链接 传送门 题意 有\(n\)棵竹子,然后有\(q\)次操作,每次操作给你\(l,r,x,y\),表示对\([l,r]\)区间的竹子砍\(y\)次,每次砍伐的长度和相等(自己定砍伐的高度\(le ...

  6. 2019牛客多校第二场H-Second Large Rectangle

    Second Large Rectangle 题目传送门 解题思路 先求出每个点上的高,再利用单调栈分别求出每个点左右两边第一个高小于自己的位置,从而而得出最后一个大于等于自己的位置,进而求出自己的位 ...

  7. [2019牛客多校第二场][G. Polygons]

    题目链接:https://ac.nowcoder.com/acm/contest/882/G 题目大意:有\(n\)条直线将平面分成若干个区域,要求处理\(m\)次询问:求第\(q\)大的区域面积.保 ...

  8. 2019牛客多校第二场D-Kth Minimum Clique

    Kth Minimum Clique 题目传送门 解题思路 我们可以从没有点开始,把点一个一个放进去,先把放入一个点的情况都存进按照权值排序的优先队列,每次在新出队的集合里增加一个新的点,为了避免重复 ...

  9. 2019牛客多校第二场F-Partition problem(搜索+剪枝)

    Partition problem 题目传送门 解题思路 假设当前两队的对抗值为s,如果把红队中的一个人a分配到白队,s+= a对红队中所有人的对抗值,s-= a对白队中所有人的对抗值.所以我们可以先 ...

随机推荐

  1. 02-msyql-存储引擎

    1.优化器针对索引算法 1.1MySQL索引自优化-AHI(自适应HASH索引) MySQL的InnoDB引擎,能够创建只有Btree. AHI作用: 自动评估"热"的内存索引pa ...

  2. UNIX读书笔记----UNIX基础知识

    UNIX体系结构: 从严格意义上讲,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们通常将这种软件称为内核(Kernel),因为他相对较小,而且位于环境的核心.图片显示了UNI ...

  3. 大神是如何学习 Go 语言之 Channel 实现原理精要

    转自: https://mp.weixin.qq.com/s/ElzD2dXWeldYkJmVVY6Djw 作者Draveness Go 语言中的管道 Channel 是一个非常有趣的数据结构,作为语 ...

  4. Java HashMap 四种遍历方式

    HashMap遍历方式包含以下4种: 1.遍历KeySet,再通过Key来getValue. 2.使用entrySet的迭代器. 3.foreach entrySet的方式. 3.foreache v ...

  5. Linux bash管道符“|”使用介绍与例子

    https://blog.csdn.net/wangqianyilynn/article/details/75576815

  6. 修改 ssh 远程连接 时间

           linux使用的是  红帽旗下 centos.         解释两个文件          /etc/ssh/sshd_config     配置ssh服务器端的          ...

  7. C#中HashSet的重复性与判等运算重载

    目录 一个故事-- 一个繁荣的遥远国度:泛型容器 但是我也不确定容器里能放些什么东西啊 一个英勇的皇家骑士:HashSet 值类型的HashSet 引用类型的HashSet 另外一个--故--事?? ...

  8. C primer plus 6 编程练习答案

    环境:vs2017 /**编程练习2**/ */ #include<stdio.h> int main(void) { printf("张三\n"); printf(& ...

  9. Python3标准库:weakref对象的非永久引用

    1. weakref对象的非永久引用 weakref模块支持对象的弱引用.正常的引用会增加对象的引用数,并避免它被垃圾回收.但结果并不总是如期望中的那样,比如有时可能会出现一个循环引用,或者有时需要内 ...

  10. myeclipse 2018 intaslled jars JREs 选项区别,及注意事项

    Standard 1.1.x VM与Standard VM的区别 在Eclipse或MyEclipse中要设置Installed JREs时,有三个选择: - Execution Environmen ...