P4147求条玄关(WA on#9#11)
  • 板块学术版
  • 楼主Meng142857
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/28 16:34
  • 上次更新2025/7/28 20:21:58
查看原帖
P4147求条玄关(WA on#9#11)
384581
Meng142857楼主2025/7/28 16:34
#include<iostream>
using namespace std;
int n,m,len[1005][1005],id,ans,pos;
bool mp[1005][1005];
struct num{
	int id1,val;
}sta[1005];
char temp;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>temp;
			if(temp=='F'){
				mp[i][j]=1;
			}
		}
	}
	for(int i=1;i<=n;i++){
		id=m+1;
		for(int j=m;j>=1;j--){
			if(!mp[i][j]){
				id=j;
			}
			len[i][j]=id-j;
		}
	}
	for(int j=1;j<=m;j++){
		pos=0;
		for(int i=1;i<=n+1;i++){
			while(len[i][j]<sta[pos].val){
				ans=max(ans,(i-sta[pos].id1)*sta[pos].val);
				pos--;
			}
			pos++;
			sta[pos].id1=i;sta[pos].val=len[i][j];
		}
		pos=0;
		sta[0].id1=n+1;
		for(int i=n;i>=0;i--){
			while(len[i][j]<sta[pos].val){
				ans=max(ans,(sta[pos].id1-i)*sta[pos].val);
				pos--;
			}
			pos++;
			sta[pos].id1=i;sta[pos].val=len[i][j];
		}
	}
	cout<<ans*3;
	return 0;
} 

2025/7/28 16:34
加载中...