求助qwq
  • 板块P4147 玉蟾宫
  • 楼主MKqwq_
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/2/15 18:19
  • 上次更新2023/11/5 03:14:33
查看原帖
求助qwq
119618
MKqwq_楼主2021/2/15 18:19
#include<bits/stdc++.h>
using namespace std;
char ch;
bool mp[1001][1001]; 
int n,m,stk[1001],tp,f[1001][1001],ans,d[1001],wd[1001];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;++i)
		for(int j=1;j<=m;++j) cin>>ch,mp[i][j]=bool(ch=='F');
	for(int j=1;j<=m;++j)
		for(int i=1;i<=n;++i)
			if(mp[i][j]) f[i][j]=f[i-1][j]+mp[i][j];
	for(int i=n;i>0;--i,tp=0){
		for(int j=1;j<=m;++j)
			if(tp==0||f[i][j]>=stk[tp]) stk[++tp]=f[i][j],wd[tp]=1;
			else{
				int wdt=0;
				while(tp>0&&f[i][j]<=stk[tp]) wdt+=wd[tp],ans=max(ans,wdt*stk[tp]),--tp;
				stk[++tp]=f[i][j],wd[tp]=wdt;
			} 
		int wdt=0;
		while(tp>0) wdt+=wd[tp],ans=max(ans,wdt*stk[tp]),--tp;
	}
	cout<<ans*3;
	return 0;
}

73pts awa

2021/2/15 18:19
加载中...