[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. Ajax 实现导出文件-支持批量

    个人感觉前端不行,好多东西记不住,所以只能将遇到的坎以及解决方案记录下,方便以后用到时查找. 首先:ajax不支持流,网上找了好多版本,感觉下面的方案不错,实验了下可行. 前端页面: <div ...

  2. 011-Spring Boot 运行流程分析SpringApplication.run

    一.程序入口 1.1.静态方法 //直接调用run方法 ConfigurableApplicationContext context = SpringApplication.run(App.class ...

  3. plsql汉化后,表格列注释中文显示成?号

  4. Delphi XE2 之 FireMonkey 入门(21) - 和 FMX 相关的类(表)

    TObject TPersistent TComponent IInterface,IInterfaceComponentReference         TBasicAction TControl ...

  5. AWK之随心所欲-高手篇

    1.内置变量 变量名 描述 FS 输入字段分隔符,默认是空格或制表符 OFS 输出字段分隔符,默认是空格 RS 输入记录分隔符,默认是换行符\n ORS 输出记录分隔符,默认是换行符\n NF 统计当 ...

  6. 类HashSet

    /* * Collection * * List * 有序(存储顺序和取出顺序一致),可以重复 * * Set * 无序(存储顺序和取出顺序不一致),唯一 * * */ import java.uti ...

  7. 腾讯重磅开源分布式NoSQL存储系统DCache

    当你在电商平台秒杀商品或者在社交网络刷热门话题的时候,可以很明显感受到当前网络数据流量的恐怖,几十万商品刚开抢,一秒都不到就售罄:哪个大明星出轨的消息一出现,瞬间阅读与转发次数可以达到上亿.作为终端用 ...

  8. javascript实现深浅拷贝

    深浅拷贝通常是对于引用数据类型进行的(数据类型为:对象(Object).数组(Array).函数(Function)) 浅拷贝: let obj = {id: 1, name: 2}; let new ...

  9. [Web 前端] 014 css 盒子模型

    1. 简介 元素在页面中显示成一个方块,类似一个盒子 把元素叫做盒子,设置对应的样式分别为 盒子的边框(border) 盒子内的内容和边框之间的间距(padding) 盒子与盒子之间的间距(margi ...

  10. webpack打包html里的img图片

    对待css里的图片, 因为已经通过引入css文件到js,打包了,可以正常通过module.rules.test检测到,然后正常打包. 但是对于html里的图片, 这个需要安装一个插件html-with ...