题目背景

有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。

题目描述

这片土地被分成$N\times M$个格子,每个格子里写着'$R$'或者'$F$',$R$代表这块土地被赐予了$rainbow$,F代表这块土地被赐予了$freda$。

现在$freda$要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着'$F$'并且面积最大。

但是$rainbow$和$freda$的$OI$水平都弱爆了,找不出这块土地,而蓝兔也想看freda卖萌(她显然是不会编程的……),所以它们决定,如果你找到的土地面积为$S$,它们每人给你S两银子。

输入格式

第一行两个整数$N$,$M$,表示矩形土地有$N$行$M$列。

接下来$N$行,每行$M$个用空格隔开的字符'$F$'或'$R$',描述了矩形土地。

输出格式

输出一个整数,表示你能得到多少银子,即(43\times$最大'$F$'矩形土地面积)的值。

大体思路就是一共三个数组,表示三个方向:$r[i][j]$表示当前位置能向右拓展的最远位置,$l[i][j]$表示当前位置能向左拓展的最远位置,$up[i][j]$表示当前位置能向上拓展的最远位置。由于“木桶效应”,我们所能围城的最大矩形的面积其实也取决于最短的一个长度,$r-l+1$就是矩形的长,$i-up$就是矩形的高,长和高都知道了的话,矩形的面积就很好求了吧,说的可能比较简略。

代码如下:

 #include <cstdio>
#include <iostream>
using namespace std;
int n,m;
int a[][];
char c;
int l[][];
int r[][];
int up[][];
int main()
{
scanf ("%d%d",&n,&m);
for (int i = ;i <= n;i++)
{
for (int j =;j<= m;j++)
{
cin>>c;
if (c=='F')
a[i][j]=;
l[i][j]=j;
r[i][j]=j;
up[i][j]=i;
}
}
for (int i = ;i <= n;i++)
{
for (int j = ;j <= m;j++)
{
if (!a[i][j]^a[i][j-]&&a[i][j]==)
l[i][j]=l[i][j-];
}
}
for (int i = ;i <= n;i++)
{
for (int j = m-;j >= ;j--)
{
if (!a[i][j]^a[i][j+]&&a[i][j]==)
r[i][j]=r[i][j+];
}
}
for (int i = ;i <= n;i++)
{
for (int j = ;j <= m;j++)
{ if (!a[i-][j]^a[i][j]&&a[i][j]==)
up[i][j]=up[i-][j],l[i][j]=max(l[i-][j],l[i][j]),r[i][j]=min(r[i-][j],r[i][j]);
}
}
int ans=;
int tmp;
for (int i = ;i <= n;i++)
{
for (int j = ;j <= m;j++)
{
if (a[i][j]==)
{
tmp = r[i][j]-l[i][j]+;
ans=max(ans,tmp*(i-up[i][j]+));
}
}
}
cout<<ans*<<endl;
return ;
}

dp--悬线dp P4147 玉蟾宫的更多相关文章

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

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

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

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

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

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

  4. DP(悬线法)【P1169】 [ZJOI2007]棋盘制作

    顾z 你没有发现两个字里的blog都不一样嘛 qwq 题目描述-->p1169 棋盘制作 题目大意 给定一个01棋盘,求其中01交错的最大正方形与矩形. 解题思路: 动态规划---悬线法 以下内 ...

  5. P4147 玉蟾宫--单调栈

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

  6. P4147 玉蟾宫

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

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

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

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

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

  9. 洛谷P4147 玉蟾宫(动规:最大子矩形问题/悬线法)

    题目链接:传送门 题目大意: 求由F构成的最大子矩阵的面积.输出面积的三倍. 1 ≤ N,M ≤ 1000. 思路: 悬线法模板题. #include <bits/stdc++.h> us ...

随机推荐

  1. 016、MySQL取本年第一季度开始日期

    #取第1季度开始日期 SELECT date_add( dy, INTERVAL ( ) MONTH ) dy FROM ( ) dy ) x ; 效果如下: 不忘初心,如果您认为这篇文章有价值,认同 ...

  2. ②初识spring

    一:基础搭建 需要:eclipse.spring插件(确认版本号并下载对应插件详见:https://blog.csdn.net/a1150499208/article/details/87988392 ...

  3. SpringBoot-集成通用mapper

    SpringBoot-集成通用mapper SpringBoot-集成通用mapper ​ 我们在SpringBoot中整合了MyBatis,但是大量重复的增删改查还是很头疼的问题,MyBatis也给 ...

  4. ArcGIS二次开发的几种方式

    1.ArcEngine开发 二次开发的常用方式,开发提供接口齐全,功能强大,比较成熟.但是,开发的软件使用需要指定版本的运行环境才能运行. 2.Addin开发 二次开发与ArcMap嵌入,开发方便,可 ...

  5. E. MaratonIME does (not do) PAs

    E. MaratonIME does (not do) PAs time limit per test 2.0 s memory limit per test 256 MB input standar ...

  6. @Resource 和@Autowired区别

    @Autowired 该注解是由spring提供的 按照类型注入 public class UserService { @Autowired private UserDao userDao; } 这样 ...

  7. uni-app解决小程序圆角样式不生效

    在使用uni-app实现小程序的时候,设置左图的右圆角不生效,样式也都没有问题,在模拟器上也可以正常现实,手机上样式出现差别,现有以下解决方法: 设置整个圆角,然后左边使用margin-left:-3 ...

  8. redmine处理规范

         开发: 1.       研发人员负责更新到的状态共有三个:  “进行中”. ”已解决”. ”需要反馈”. 2.       在开始修复bug的时候,把状态更新为”进行中”,把title更新 ...

  9. 一对多关联按照一方的id查找信息的一个笛卡尔积问题

    mapper中,关联的一对多,正确的结果应该是按照一方的id查找,根据映射得到的是一个一方对象,对象里嵌套这list属性,但是结果却出来了多条,在sql中实验 一方中123456789只有一条数据 多 ...

  10. junit基础学习之-测试service层(3)

    测试步骤: 在之前的文章中已经加了junit的环境,这就不需要了. 1.加载junit类,spring配置文件,指明junit测试器,@Runwith 2.定义变量,service,不可以使用spri ...