社区讨论

求助

灌水区参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@ltkz3vop
此快照首次捕获于
2024/03/10 11:47
2 年前
此快照最后确认于
2024/03/10 14:41
2 年前
查看原帖
P4147 玉蟾宫
一行没输入完就炸了
CPP
#include <bits/stdc++.h>
using namespace std;
int n,m,ans;
void find(int h[]){
	int t[1010]={},s[1010]={},top,sop,l[1010]={},r[1010]={};
	for(int i=1;i<=m;i++){
		while(h[t[top]]>=h[i]&&top>=1)top--;
		l[i]=t[top];
		t[++top]=i;
	}
	for(int i=m;i>=1;i++){
		while(h[s[sop]]>=h[i]&&sop>=1)sop--;
		r[i]=m-s[sop]+1;
		s[++sop]=i;
	}
	for(int i=1;i<=n;i++){
		ans=max(ans,h[i]*(r[i]-l[i]-1));
	}
	return ;
}
char f[1010][1010];
int s[1010][1010];
int main(){
	cin >> n >> m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin >> f[i][j];
			if(f[i][j]=='F'){
				s[i][j]=s[i-1][j]+1;
			}
		}
		find(s[i]);
	}
	cout << 3*ans;
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...