BZOJ3039:玉蟾宫
浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html
题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=3039
记录\(h[i][j]\)表示\((i,j)\)可以往上延伸多长,然后做\(n\)遍POJ2559就行了。
据说这叫悬线法。还有这出题人故意增加读入难度是个什么鬼
时间复杂度:\(O(n)\)
空间复杂度:\(O(n)\)
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=1e3+5;
int n,m,ans;
char mp[maxn][maxn];
int h[maxn][maxn],stk[maxn],len[maxn];
int read() {
	int x=0,f=1;char ch=getchar();
	for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
	for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
	return x*f;
}
int calc(int *a) {
	int top=0,Mx=0;
	memset(len,0,sizeof(len));
	for(int i=1;i<=m+1;i++) {
		while(top&&a[stk[top]]>a[i])
			len[stk[top]]+=i-stk[top]-1,top--;
		stk[++top]=i;
	}top=0;
	for(int i=m;~i;i--) {
		while(top&&a[stk[top]]>a[i])
			len[stk[top]]+=stk[top]-i-1,top--;
		stk[++top]=i;
	}
	for(int i=1;i<=m;i++)
		Mx=max(Mx,a[i]*(len[i]+1));
	return Mx;
}
int main() {
	n=read(),m=read();
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++)
			while (mp[i][j]!='F'&&mp[i][j]!='R') mp[i][j]=getchar();
		for(int j=1;j<=m;j++)
			if(mp[i][j]=='R')h[i][j]=0;
			else h[i][j]=h[i-1][j]+1;
	}
	for(int i=1;i<=n;i++)
		ans=max(ans,calc(h[i]));
	printf("%d\n",ans*3);
	return 0;
}
												
											BZOJ3039:玉蟾宫的更多相关文章
- BZOJ3039: 玉蟾宫&wikioi2491 玉蟾宫
		
3039: 玉蟾宫 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 430 Solved: 265[Submit][Status] Descriptio ...
 - bzoj3039 玉蟾宫
		
Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子,每个格子里写着'R'或者' ...
 - 悬线法 || BZOJ3039: 玉蟾宫 || Luogu P4147 玉蟾宫
		
题面: P4147 玉蟾宫 题解:过于板子举报了 #include<cstdio> #include<cstring> #include<iostream> #de ...
 - 2018.09.29 bzoj3039: 玉蟾宫(悬线法)
		
传送门 悬线法的板子题. 悬线法只需要保存当期点向下最多多少个,把这个当成一条线,再处理出线绷直之后最多能向左右延展多少就行了. 代码: #include<bits/stdc++.h> # ...
 - 【BZOJ-3039&1057】玉蟾宫&棋盘制作       悬线法
		
3039: 玉蟾宫 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 753 Solved: 444[Submit][Status][Discuss] D ...
 - 【BZOJ3039】玉蟾宫 单调栈
		
[BZOJ3039]玉蟾宫 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子 ...
 - 刷题总结——玉蟾宫(bzoj3039单调栈)
		
题目: Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子,每个格子里写着'R ...
 - BZOJ 3039: 玉蟾宫【dp】
		
Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子,每个格子里写着'R'或者' ...
 - codevs 2491 玉蟾宫
		
codevs 2491 玉蟾宫 http://codevs.cn/problem/2491/ 题目描述 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉 ...
 - TYVJ1939 玉蟾宫
		
背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代 ...
 
随机推荐
- EasyDarwin开源流媒体服务器Golang版本:拉转推功能之拉流实现方法
			
EasyDarwin开源流媒体服务器(www.easydarwin.org),拉转推是一个很有意义的功能,它可将一个独立的RTSP数据源"拉"到服务器,再通过转发协议转发给多个客户 ...
 - Spring MVC中的模型数据处理
			
一.综述 Spring MVC 提供了以下途径来输出模型数据: 1.ModelAndView 当处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据到请求域. 2.Ma ...
 - python 捕获异常详细信息
			
import os import sys import traceback BasePath = os.path.dirname(os.getcwd()) sys.path.append(BasePa ...
 - Mybatis sql注入问题
			
预编译方式,即PreparedStatement,可以防注入:#{id} <select id="getBlogById" resultType="Blog&quo ...
 - 什么是GIL锁以及作用
			
全局解释锁,每次只能一个线程获得cpu的使用权:为了线程安全,也就是为了解决多线程之间的数据完整性和状态同步而加的锁,因为我们知道线程之间的数据是共享的.
 - 我的Android进阶之旅------> Android在TextView中显示图片方法
			
面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用Tex ...
 - 4.对urls.py的解释
			
解释: 路由配置文件(URL分发器),它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表.就是以这种方式告诉Django对于每个URL的处理类.Django启动的时候回去加载urls. ...
 - Jquery遍历table并拿到每个单元格里的值
			
$('#table_id tr').each(function(i){ alert(i); if(i!=0){ //td内的文本 var v0 = $(this).children('td').eq( ...
 - shell编程2  ---条件判断语句
			
shell编程2 一.条件判断语句 1.按照文件类型进行判断 eg:test -e /etc/passwd 或者 [ -e /etc/passwd ] &&echo yes || ...
 - 培训笔记——Linux目录说明
			
一般我们的电脑里都只有一块硬盘,但是这块硬盘怎么使用呢? 我们的头脑里大体有个分区的概念,为什么要分区呢? 不是很清楚,不过有句话说 不要把鸡蛋放在同一个篮子里,可能有这种考虑吧. 好,最起码知道分区 ...