AC代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
int a[1010][1010];
int main(){
int T, N, M;
int l[1010], r[1010];
char temp[10];
cin >> T;
while( T-- ){
memset( a[0], 0, sizeof( a[0] ) );
scanf( "%d%d", &N, &M );
for( int i = 1; i <= N; i++ ){
for( int j = 1; j <= M; j++ ){
scanf( "%s", temp );
if( temp[0] == 'F' ){
a[i][j] = a[i-1][j] + 1;
}else{
a[i][j] = 0;
}
}
}
int ans = 0;
for( int i = 1; i <= N; i++ ){
for( int j = 1; j <= M; j++ ){
l[j] = r[j] = j;
}
a[i][0] = a[i][M+1] = -1;
for( int j = 2; j <= M; j++ ){
while( a[i][j] <= a[i][l[j]-1] ){
l[j] = l[l[j]-1];
}
}
for( int j = M - 1; j >= 1; j-- ){
while( a[i][j] <= a[i][r[j]+1] ){
r[j] = r[r[j]+1];
}
}
for( int j = 1; j <= M; j++ ){
ans = max( ans, ( r[j] - l[j] + 1 ) * a[i][j] );
}
}
cout << ans * 3 << endl;
}
return 0;
}