事实上和1985一摸一样。
#include <cstdio>
#include <string>
/* state: 0.34s, 404kb */
int n, a, b;
int m[1000], r[1000], l[1000];
void pm()
{
for(int i = 0; i < b; i ++)
{
printf("%d ", m[i]);
}
printf("\n");
}
int main()
{
//freopen("in.txt", "r", stdin);
int i, k, j;
scanf("%d", &n);
for(i = 0; i < n; i ++)
{
memset(m, 0, sizeof(m));
scanf("%d %d ", &a, &b);
//pm();
int max = 0;
//dp(n^2......)
for(k = 0; k < a; k ++)
{
for(j = 0; j < b; j ++)
{
char tc; scanf("%c ", &tc);
if(tc == 'R')
m[j] = 0;
else
m[j] ++;
}
//pm();
for(j = 0; j < b; j ++)
{
l[j] = j;
while(l[j] > 0 && m[j] <= m[l[j] - 1])
l[j] = l[l[j] - 1];
}
for(j = b - 1; j >= 0; j --)
{
r[j] = j;
while(r[j] < b - 1 && m[j] <= m[r[j] + 1])
r[j] = r[r[j] + 1];
if(max < (r[j] - l[j] + 1) * m[j])
max = (r[j] - l[j] + 1) * m[j];
}
}
printf("%d\n", max * 3);
}
return 0;
}
评论