zoukankan      html  css  js  c++  java
  • hdu 1505 City Game (hdu1506加强版)

    # include <stdio.h>
    # include <algorithm>
    # include <string.h>
    # include <iostream>
    using namespace std;
    char a[1010][1010];
    int dd[1010][1010];///宽度
    int r[1010],l[1010];
    int main()
    {
        int t,i,j,n,m,max1;
        while(~scanf("%d",&t))
        {
            while(t--)
            {
                scanf("%d%d",&n,&m);
                getchar();
                for(i=1; i<=n; i++)
                    for(j=1; j<=m; j++)
                        cin>>a[i][j];
                for(i=1; i<=m; i++)
                    dd[0][i]=0;///初始化虚设的一行
    
                for(i=1; i<=n; i++) ///求出每点高度
                {
                    for(j=1; j<=m; j++)
                    {
                        if(a[i][j]=='F')
                            dd[i][j]=dd[i-1][j]+1;
                        else
                            dd[i][j]=0;
                    }
                }
                max1=-1;
                for(i=1; i<=n; i++)///转化为hdu1506
                {
                    for(j=1; j<=m; j++)
                        l[j]=r[j]=j;
                    for(j=2; j<=m; j++)
                    {
                       while(dd[i][l[j]-1]>=dd[i][j]&&l[j]>1)
                         l[j]=l[l[j]-1];
                    }
                    for(j=m-1; j>=1; j--)
                    {
                       while(dd[i][r[j]+1]>=dd[i][j]&&r[j]<m)
                         r[j]=r[r[j]+1];
                    }
                    for(j=1; j<=m; j++)
                    {
                        max1=max(max1,dd[i][j]*(r[j]-l[j]+1));
                    }
                }
                printf("%d
    ",max1*3);
            }
        }
        return 0;
    }
    

  • 相关阅读:
    写日志
    读写excel
    python安装模块
    数据库
    日志和关键字查找
    时间戳
    os 模块
    图-最小生成树算法之Kruskal及其Java实现
    图-图的表示、搜索算法及其Java实现
    前端实现list排序
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5373464.html
Copyright © 2011-2022 走看看