tyvj1939 玉蟾宫
2016-07-05 10:17
148 查看
背景
有一天,小猫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
输入
输出
备注
对于50%的数据,1<=N,M<=200
对于100%的数据,1<=N,M<=1000
【分析】
二维单调栈
不是很裸的单调栈
【代码】
有一天,小猫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
备注
对于50%的数据,1<=N,M<=200
对于100%的数据,1<=N,M<=1000
【分析】
二维单调栈
不是很裸的单调栈
【代码】
//tyvj 玉蟾宫 分行单调栈 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define fo(i,j,k) for(int i=j;i<=k;i++) using namespace std; const int mxn=1005; char c; int n,m,ans; int h[mxn][mxn],l[mxn],r[mxn],s[mxn]; bool map[mxn][mxn]; int main() { scanf("%d%d",&n,&m); fo(i,1,n) fo(j,1,m) { cin>>c; if(c=='F') map[i][j]=1; } fo(i,1,n) fo(j,1,m) if(map[i][j]) h[i][j]=h[i-1][j]+1; fo(i,1,n) { int top=0; fo(j,1,m) { while(h[i][s[top]]>=h[i][j] && top) top--; l[j]=s[top]+1; s[++top]=j; } top=0; for(int j=m;j;j--) { while(h[i][s[top]]>=h[i][j] && top) top--; r[j]=s[top]-1; s[++top]=j; ans=max(ans,(r[j]-l[j]+1)*h[i][j]); } } printf("%d\n",3*ans); return 0; }
相关文章推荐
- 浅谈单调队列、单调栈
- 用单调栈解决最大连续矩形面积问题
- codeforces 601B 斜率+单调栈
- MZ Training 2014 #6 C题
- USACO2011Open Gold Bookshelf 题解
- poj 3494 dp+单调栈
- poj 2559 单调栈
- poj 3494 Largest Submatrix of All 1’s
- POJ 2082 (单调栈)
- bzoj-2259 新型计算机
- POJ 2082 Terrible Sets
- 【Poi2008】【BZOJ1113】海报PLA
- 【HNOI2016】【BZOJ4540】序列
- 51 Nod 1215 数组的宽度(单调栈)
- cf div2 #333 D. Lipshitz Sequence (单调栈)
- CF #GoodBye 2014 A~E
- 单调栈:平面上N个底部对齐紧靠在一起的矩形,宽高是任意整数,求其最大内切矩形的面积
- 单调栈:平面上N个底部对齐紧靠在一起的矩形,宽高是任意整数,求其最大内切矩形的面积(版本2)
- Codeforces Round #305 (Div. 1) B. Mike and Feet(单调栈)
- LA 3029(悬线法)