[tyvj]P1939

玉蟾宫

——!x^n+y^n=z^n

背景

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

描述

这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。
现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着'F'并且面积最大。
但是rainbow和freda的OI水平都弱爆了,找不出这块土地,而蓝兔也想看freda卖萌(她显然是不会编程的……),所以它们决定,如果你找到的土地面积为S,它们每人给你S两银子。

输入格式

第一行两个整数N,M,表示矩形土地有N行M列。
接下来N行,每行M个用空格隔开的字符'F'或'R',描述了矩形土地。

输出格式

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

测试样例1

输入

5 6 
R F F F F F 
F F F F F F 
R R R F F F 
F F F F F F 
F F F F F F

输出

45


考虑下面这种情况,就是所有宽为1的矩形的底在同一直线上,我们可以考虑用栈来维护,为什么呢?

注意到对于每一个小矩形,他对答案的贡献为向左延伸和向右延伸的最大值,如果后面加进一个低一点的元素,那这个就没啥用了,何不如直接删掉?

用单调栈,一个记录栈顶元素,另一个记录在当前索引应删除的元素。

那只需预处理出s[i][j]第i行,第j列,能向右延长的最大值,每次枚举底部,那我们只需要每次加入元素并更新答案即可。

代码:

 #include<iostream>
 #include<cstdio>
 #include<cstring>
 using namespace std;
 inline int read();
 int Max(int x,int y){return x>y?x:y;}
 namespace lys{
      ;
     int s[N][N],s1[N],s2[N],a[N][N];
     int n,m,ans,top,del;
     void work(int row){
         top=;
         ;i<=n+;i++){
             del=i;
             while(top&&s1[top]>=s[i][row]){
                 ans=Max(ans,s1[top]*(i-s2[top]));
                 del=s2[top--];
             }
             s1[++top]=s[i][row];s2[top]=del;
         }
     }
     int main(){
         int i,j;
         char c;
         n=read(); m=read();
         ;i<=n;i++)
             ;j<=m;j++){
                 c=getchar();
                 while(c!='F'&&c!='R') c=getchar();
                 ;
             }
         ;i<=n;i++)
             ;j--)
                 s[i][j]=a[i][j]?s[i][j+]+:;
         ;i<=m;i++) work(i);
         printf(*ans);
         ;
     }
 }
 int main(){
     lys::main();
     ;
 }
 inline int read(){
     ,ff=;
     char c=getchar();
     '){
         ;
         c=getchar();
     }
     +c-',c=getchar();
     return kk*ff;
 }

[tyvj]P1939玉蟾宫[单调栈]的更多相关文章

  1. P4147 玉蟾宫--单调栈

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

  2. bzoj 3039: 玉蟾宫 单调栈或者悬线法求最大子矩阵和

    3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 有一天,小猫rainbow ...

  3. 【BZOJ3039】玉蟾宫 单调栈

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

  4. 洛谷P4147 玉蟾宫 单调栈/悬线法

    正解:单调栈/悬线法 解题报告: ummm这题我当初做的时候一点思路也没有只会暴力出奇迹:D(啊听说暴力好像能水过去呢,,, 然后当初是看的题解,然后学了下悬线法 然后就忘了:D 然后我现在看发现看不 ...

  5. 【BZOJ】3039: 玉蟾宫(DP/单调栈)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3039 每次看到我的提交都有点淡淡的忧伤T_T.. 看到此题我想到用前缀和维护点ij向左和向上能拓展的 ...

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

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

  7. 刷题总结——玉蟾宫(bzoj3039单调栈)

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

  8. [Tyvj1939] 玉蟾宫(单调栈)

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

  9. 洛谷P4147 玉蟾宫 (单调栈)

    要求我们去找一个最大矩形面积. 单调栈做法(和P1950 长方形那道题类似(一模一样)). 1 #include<bits/stdc++.h> 2 using namespace std; ...

随机推荐

  1. mysql5.7插入数据报错 Incorrect integer value

    mysql5.7插入字符串为空的时候取出来的值设置为null

  2. 关于Vue的理解以及与React框架的对比

    1.Vue的理解 概念: Vue是一套用于构建用户界面的渐进式框架: Vue的核心库只关注视图层: 是一个数据驱动的MVVM框架: 特性: 确实轻量:体积比较小: 数据绑定简单.方便: 有一些简单的内 ...

  3. using 用法拾忆

    using 用法主要包括三种: 1.引用外部命名空间以及外部命名空间中定义的类型(指令) 2.创建命名空间别名,避免因名称相同造成的冲突(指令) 3.定义资源使用范围,在范围结束后释放资源对象(语句) ...

  4. <每日一题> Day8:CodeForces-996A.Hit the Lottery(贪心)

    原题链接 因为数据太水,我直接一发暴力过了...... #include <cstdio> using namespace std; ] = {, , , , }; int main() ...

  5. hive DDL操作

    1.创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path ...

  6. Can you answer these queries? HDU 4027 线段树

    Can you answer these queries? HDU 4027 线段树 题意 是说有从1到编号的船,每个船都有自己战斗值,然后我方有一个秘密武器,可以使得从一段编号内的船的战斗值变为原来 ...

  7. 中标麒麟系统安装rpm文件

    打开终端,获得su权限. cd到rpm所在文件夹,输入指令,rpm -ivh rpm的名称

  8. ARM汇编1

    一. 指令和伪指令 1.1. 指令 a. (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行. 1.2. 伪指令 b. (汇编)伪指令本质上不是指令(只是 ...

  9. github提交用户权限被拒

    场景介绍: 之前登陆了朋友的github账号,保存了朋友的GitHub信息在本地.今天想重新提交一个项目到自己的GitHub账号时,一直用朋友的账号提交且提示权限被拒. 解决: 方法一,GitHub配 ...

  10. python学习笔记(11):文件的访问与函数式编程

    一.文本文件读写的三种方法 1.直接读入 file1 = open('E:/hello/hello.txt') file2 = open('output.txt','w') #w是可写的文件 whil ...