用PKU 2559的思路
跟2559一样还有DP解法:路径压缩
1
2
#include <cstdio>
3
#include <cstring>
4
5
const int SIZE = 1002 ;
6
7
struct STACK
8

{
9
int ht ;
10
int pos ;
11
} ;
12
13
STACK stack[SIZE] ;
14
int top ;
15
16
int row , col , height[SIZE] ;
17
18
int GetMaxArea()
19

{
20
int ans , temp ;
21
int i ;
22
23
top = 0 ;
24
25
stack[top].ht = height[0] ;
26
stack[top].pos = 0 ;
27
ans = height[0] ;
28
height[col] = 0 ;
29
30
for ( i = 1 ; i <= col ; ++i )
31
{
32
if ( height[i] <= stack[top].ht )
33
{
34
while ( top >= 0 && height[i] <= stack[top].ht )
35
{
36
temp = stack[top].ht * (i - stack[top].pos) ;
37
38
if ( temp > ans )
39
ans = temp ;
40
41
top-- ;
42
}
43
top++ ;
44
stack[top].ht = height[i] ;
45
}
46
else
{
47
stack[++top].ht = height[i] ;
48
stack[top].pos = i ;
49
}
50
}
51
52
return ans ;
53
}
54
55
56
57
int main()
58

{
59
//freopen("1.txt", "r", stdin) ;
60
61
int test ;
62
int maxProfit , temp , i , j ;
63
char ch ;
64
65
scanf("%d", &test) ;
66
67
while ( test-- )
68
{
69
70
scanf("%d %d", &row, &col) ;
71
getchar() ;
72
73
maxProfit = 0 ;
74
75
j = 0 ;
76
77
while ( true )
{
78
ch = getchar() ;
79
80
if ( ch == 'R' )
{
81
height[j++] = 0 ;
82
}
83
else if ( ch == 'F' )
{
84
height[j++] = 1 ;
85
}
86
87
if ( j == col )
88
break ;
89
}
90
91
92
for ( i = 1 ; i < row ; ++i )
93
{
94
j = 0 ;
95
96
while ( true )
{
97
ch = getchar() ;
98
99
if ( ch == 'R' )
{
100
height[j++] = 0 ;
101
}
102
else if ( ch == 'F' )
{
103
height[j++]++ ;
104
}
105
106
if ( j == col )
107
break ;
108
}
109
110
temp = GetMaxArea() ;
111
112
if ( temp > maxProfit )
113
maxProfit = temp ;
114
}
115
116
printf("%d\n", (maxProfit * 3)) ;
117
118
119
}
120
return 0 ;
121
}
122