萌新求问
  • 板块P4147 玉蟾宫
  • 楼主lanretE
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/4/8 16:37
  • 上次更新2023/10/28 04:17:25
查看原帖
萌新求问
398190
lanretE楼主2022/4/8 16:37

这里是AC代码

#include<iostream>
#include<cstring>
using namespace std;
const int N=1010;
char a[N][N];
int l[N][N],r[N][N],h[N][N],ans;
bool flag=0;
int main(){
	int n,m; cin>>n>>m;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
			cin>>a[i][j];
			if(a[i][j]=='F') flag=1;
			h[i][j]=1;
			r[i][j]=l[i][j]=j;
		} 
		for(int j=2;j<=m;++j)
			if(a[i][j]=='F' && a[i][j-1]=='F') l[i][j]=l[i][j-1];
		for(int j=m-1;j>0;--j)
			if(a[i][j]=='F' && a[i][j+1]=='F') r[i][j]=r[i][j+1]; 
	}
	if(!flag){
		cout<<0<<endl;
		return 0;
	}
	for(int i=1;i<=n;++i)
		for(int j=1;j<=m;++j){
			if(i>1 && a[i][j]=='F')
				if(a[i-1][j]=='F'){
					h[i][j]=h[i-1][j]+1;
					l[i][j]=max(l[i][j],l[i-1][j]);
					r[i][j]=min(r[i][j],r[i-1][j]);
				} 
			ans=max(ans,(r[i][j]-l[i][j]+1)*h[i][j]);
		}
	cout<<ans*3<<endl;
	return 0;
}

但是如果把输入时对 h 数组的赋值去掉,改为输入前的 memset,样例都过不了,请问是为什么

2022/4/8 16:37
加载中...