本来想先打个n^3暴力试试水
没想到数据太水,优化优化我的暴力就直接过了?
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
int a[1005][1005];
int b[1005],f[1005];
char t;
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++) {
scanf(" %c",&t);
a[i][j]= t=='F';
}
for(int i=1; i<=n; i++) {//快乐3层嵌套循环
memset(f,0,sizeof(f));
for(int j=1; j<=m; j++)
b[j]= a[i][j]?b[j]+1:0;
for(int j=1; j<=m; j++) {
int MIN=INT_MAX;
for(int k=j; k<=m&&MIN/*优化1 当MIN为0时面积一定为0*/; k++) {
MIN=min(MIN,b[k]);
if(MIN<=f[k]) break;//优化2
else f[k]=MIN;
ans=max(ans,(k-j+1)*MIN);
}
}
}
cout<<ans*3<<"\n";
return 0;
}
这是怎么放过去的??
有可能可以过的,毕竟这样常数可能减少很多