Uva 1330 City Game

https://vjudge.net/problem/UVA-1330

水一水

#include<bits/stdc++.h>

using namespace std;

const int maxn = 1e3 + 50;
const int inf = 1e9 + 7;
int n, m, k;
char M[maxn][maxn];
int up[maxn][maxn], lo[maxn][maxn], hi[maxn][maxn];

int32_t main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int t;
    cin >> t;
    while(t--)
    {
        cin >> n >> m;

        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= m; j++)
                cin >> M[i][j];
        }
        int ans = 0;
        for(int i = 1; i <= n; i++)
        {
            int l = 0, h = 1 + m;
            for(int j = 1; j <= m; j++)
            {
                if(M[i][j] == 'F')
                {
                    if(i == 1)
                        up[i][j] = 1;
                    else
                        up[i][j] = up[i - 1][j] + 1;

                    if(i == 1)
                        lo[i][j] = l + 1;
                    else
                        lo[i][j] = max(lo[i - 1][j], l + 1);
                }
                else
                {
                    l = j;
                    lo[i][j] = 0;
                    up[i][j] = 0;
                }
            }

            for(int j = m; j >= 1; j--)
            {
                if(M[i][j] == 'F')
                {
                    if(i == 1)
                        hi[i][j] = h - 1;
                    else
                        hi[i][j] = min(h - 1, hi[i - 1][j]);
                    ans = max(ans, up[i][j] * (hi[i][j] - lo[i][j] + 1));
                }
                else
                    hi[i][j] = 1 + m, h = j;
            }
        }
        cout << ans * 3 << endl;
    }
    return 0;
}/*
2
5 6
RFFFFF
FFFFFF
RRRFFF
FFFFFF
FFFFFF
*/

猜你喜欢

转载自blog.csdn.net/K_ona/article/details/81278011