这题做的方法我是参照着大白书做的
#include <cstdio>
#include <algorithm>
using namespace std;
int matrix[1005][1005];
int main(){
int left[2][1005],right[2][1005],up[2][1005];
int i,j;
int T;
scanf("%d",&T);
while(T--){
int n,m;
scanf("%d %d",&n,&m);
for(i=0;i<n;i++){
for(j=0;j<m;j++){
char c=getchar();
while(c!='R' && c!='F')
c=getchar();
matrix[i][j]=c=='F'?0:1;
}
}
int ans=0;
int k;
i=1;
for(k=0;k<n;k++){
i=1-i;
int lo=-1,ro=m;
for(j=0;j<m;j++){
if(matrix[k][j]){
up[i][j]=left[i][j]=0;lo=j;
}
else{
up[i][j]=k==0?1:up[1-i][j]+1;
left[i][j]=k==0?lo+1:max(left[1-i][j],lo+1);
}
}
for(j=m-1;j>=0;j--){
if(matrix[k][j]){
right[i][j]=m;
ro=j;
}
else{
right[i][j]=k==0?ro-1:min(right[1-i][j],ro-1);
ans=max(ans,up[i][j]*(right[i][j]-left[i][j]+1));
}
}
}
printf("%d\n",ans*3);
}
return 0;
}