题目

就是全0子矩阵。

先预处理每个点上面有多少个连续的0(包括自己)。

然后我们枚举下边界(1-n)。

我们开一个单调栈,记录一个上界递增的矩形集合。

如果我们扫到了一个比当前栈顶要矮的矩形,那么我们就把所有比扫到的矩形高的矩形加入答案并且把它们的高度改成和扫到的矩形一样。

具体实现画个图结合代码吧,空讲感觉挺虚的。

#include<bits/stdc++.h>
using namespace std;
const int N=1007;
void max(int &a,int b){a=a>b? a:b;}
int n,m,ans,a[N][N],q[N],stk[N],top;
int Get(){char c=getchar();while(c^'R'&&c^'F')c=getchar();return c=='F';}
void solve(int k)
{
stk[top=1]=1,q[1]=a[k][1];
for(int i=2,j;i<=m+1;++i)
{
for(j=0;a[k][i]<q[top];j+=stk[top],max(ans,q[top--]*j));
q[++top]=a[k][i],stk[top]=j+1;
}
}
int main()
{
cin>>n>>m;int i,j;
for(i=1;i<=n;++i) for(j=1;j<=m;++j) a[i][j]=Get()? a[i-1][j]+1:0;
for(i=1;i<=n;++i) solve(i);
return !printf("%d",ans*3);
}

Luogu P4147 玉蟾宫的更多相关文章

  1. [Luogu P4147] 玉蟾宫 (网格DP)

    题面 传送门:https://www.luogu.org/problemnew/show/P4147 Solution 裸的求极大子矩阵 感谢wzj dalao的教学 首先,有一个很显然但很重要的结论 ...

  2. 悬线法 || BZOJ3039: 玉蟾宫 || Luogu P4147 玉蟾宫

    题面: P4147 玉蟾宫 题解:过于板子举报了 #include<cstdio> #include<cstring> #include<iostream> #de ...

  3. P4147 玉蟾宫--单调栈

    P4147 玉蟾宫 题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子 ...

  4. P4147 玉蟾宫

    P4147 玉蟾宫 给定一个 \(N * M\) 的矩阵 求最大的全为 \(F\) 的子矩阵 Solution 悬线法 限制条件为转移来的和现在的都为 \(F\) Code #include<i ...

  5. [BZOJ 3039&洛谷P4147]玉蟾宫 题解(单调栈)

    [BZOJ 3039&洛谷P4147]玉蟾宫 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. ...

  6. P4147 玉蟾宫(悬线法求最大子矩阵)

    P4147 玉蟾宫 悬线法 ,\(l_{i,j},r_{i,j},up_{i,j}\) 分别表示 \((i,j)\) 这个点向左,右,上能到达的远点.然后面积就很好办了.具体实现见代码. 然而,还有更 ...

  7. P4147 玉蟾宫 二维DP 悬线法

    题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F ...

  8. dp--悬线dp P4147 玉蟾宫

    题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F ...

  9. [洛谷P4147] 玉蟾宫

    类型:单调栈 传送门:>Here< 题意:求一个$01$矩阵中最大子矩形(全是$1$)的面积 解题思路 单调栈的一个经典应用 考虑维护一个数组$p[i][j]$表示$(i,j)$往上最多有 ...

随机推荐

  1. vue-upload 封装组件-上传组件

    我后端的,刚接触vue个星期,根据需求写了个上传控件,很灵活的.没有看element el-upload源码,样式用的element的.感觉vue确实好用. 先看样子: <!-- 单文件上传组件 ...

  2. oracle11G 同时支持IPV4和IPV6配置

    1.修改listener.ora文件 LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ...

  3. POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)

    题目链接 http://poj.org/problem?id=1430 题解 qaq写了道水题-- 在模\(2\)意义下重写一下第二类Stirling数的递推式: \[S(n,m)=S(n-1,m-1 ...

  4. Java 内部类、成员类、局部类、匿名类等

    Java各种称呼类详解 Java有各种各样类,内部类.嵌套类.成员类.局部类(本地类).静态类.匿名类.文件类以及这些组合起来的称呼类,成员内部类,成员匿名类,成员嵌套类,本地匿名类等,真是多的不行, ...

  5. 第六周课程总结&实验报告(四)

    实验报告(四) 一.实验目的 1.掌握类的继承 2.变量的继承和覆盖,方法的继承,重载和覆盖的实现 二.实验的内容 1.根据下面的要求实现圆类Circle. 圆类Circle的成员变量:radius表 ...

  6. gcc编译错误

    使用boost的时候遇到一个链接错误 undefined reference to `boost::system::detail::generic_category_instance 出现这个问题的有 ...

  7. Navicat1_介绍

    https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&shareId=400000000398 ...

  8. 小程序的autocomplete

    1.别做单个组件的autocomplete了,很坑,牵扯的坑太多,最后碰到原生组件canvas会让人欲哭无泪 2.单个组件的路走不通,走新页面吧,点击input框,进入到下个页面,搜所后选择,点击完成 ...

  9. 阶段3 2.Spring_09.JdbcTemplate的基本使用_3 JdbcTemplate在Dao中的使用

    实际的开发过程中都是基于dao的 创建持久层dao 定义三个方法 持久层实现类 创建dao的实现类. 添加未实现的方法 通过spring注入 jdbcTemplate.所以这里生成一个jdbcTemp ...

  10. 阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析

    创建新的项目 修改打成jar包 创建一个接口 用来模拟保存的方法 创建接口的实现类 我们没有IAccountDao这个类.那么就需要去创建Iaccountdao IAccountDao接口的创建 创建 ...