• hdu 1505 City Game


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505

    题意:n*m的地区里有被占用的、有空闲的的地,求最大内置矩形。

    s[i][j]为累计到第i行每列的连续空闲地块数。

    然后枚举每一行,以该行为基线求最大矩形,方法类似hdu 1506。

    即l[j]、r[j]分别保存以s[i][j]为高的矩形能到达最左和最右,然后枚举每点,ans保存最大的面积。 

     1 #include <cstdio>
     2 #include <cstring>
     3 #define N 1005
     4 
     5 int a[N][N], s[N][N], l[N], r[N];
     6 int max2(int x, int y)
     7 {
     8     return x > y ? x : y;
     9 }
    10 
    11 int main()
    12 {
    13     int t, n, m;
    14     char ch[5];
    15     scanf("%d",&t);
    16     while(t--)
    17     {
    18         scanf("%d%d",&n,&m);
    19         for(int i=1; i<=n; i++)
    20         {
    21             for(int j=1; j<=m; j++)
    22             {
    23                 scanf("%s",ch);  //这题卡字符输入
    24                 if(ch[0]=='R') a[i][j] = 0;
    25                 else if(ch[0]=='F') a[i][j] = 1;
    26             }
    27         }
    28 
    29         int ans = 0;
    30         memset(s, 0sizeof(s));
    31         for(int i=1; i<=n; i++)
    32         {
    33             for(int j=1; j<=m; j++)
    34             {
    35                 if(a[i][j]==1) s[i][j] = s[i-1][j] + 1//求累计高度
    36                 l[j] = r[j] = j;
    37             }
    38             for(int j=2; j<=m; j++) //求最左
    39             {
    40                 while(l[j]-1>=1 && s[i][l[j]-1]>=s[i][j])
    41                     l[j] = l[l[j]-1];
    42             }
    43             for(int j=m-1; j>=1; j--) //求最右
    44             {
    45                 while(r[j]+1<=m && s[i][r[j]+1]>=s[i][j])
    46                     r[j] = r[r[j]+1];
    47             }
    48             for(int j=1; j<=m; j++) //枚举每个高度,求最大矩形
    49             {
    50                 ans = max2(ans, (r[j]-l[j]+1)*s[i][j]);
    51             }
    52         }
    53         printf("%d ",ans*3);
    54     }
    55     return 0;
    56 }
    View Code 
  • 相关阅读:
    解决SecureCRT中文显示乱码
    能大大提升工作效率和时间效率的9个重要习惯
    PHP基础知识
    CI学习相关地址
    IE8引入JavaScript
    IE9以下不支持placeholder属性
    IE8浏览器兼容性问题
    简单的DOS命令
    Linux常用运维指令
    log4j日志+面向切面监控异常
  • 原文地址:https://www.cnblogs.com/byluoluo/p/3526504.html
Copyright © 2020-2023  润新知