zoukankan      html  css  js  c++  java
  • HDU 1505 City Game

    这题是上一题的升级版

    关键在于条形图的构造,逐行处理输入的矩阵,遇到'F'则在上一次的条形图基础上再加1,遇到'R'则置为0

    然后用上一题的算法,求每行对应条形图的最大矩阵的面积。

    另外:本来是debug都不用就1A的节奏。可在输入数据上,一开始我用的是scanf读入字符 和 getchar跳过无效字符,在测试数据上是没有问题的,但一交上去就WA掉了。

    看到别人的代码使用cin读入的。其实,如果输入数据不太大的话,cin还是比较放心好用的。

     1 //#define LOCAL
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 const int maxn = 1010;
     9 char map[maxn][maxn];
    10 int h[maxn], l[maxn], r[maxn];
    11 
    12 int main(void)
    13 {
    14     #ifdef LOCAL
    15         freopen("1505in.txt", "r", stdin);
    16     #endif
    17 
    18     int T;
    19     scanf("%d", &T);
    20     while(T--)
    21     {
    22         int row, col;
    23         scanf("%d%d", &row, &col);
    24         getchar();
    25         int i, j;
    26         for(i = 1; i <= row; ++i)
    27             for(j = 1; j <= col; ++j)
    28                 cin >> map[i][j];
    29 
    30         memset(h, 0, sizeof(h));
    31         l[1] = 1, r[col] = col;
    32         int t, ans = -1;
    33         for(i = 1; i <= row; ++i)
    34         {
    35             for(j = 1; j <= col; ++j)
    36                 if(map[i][j] == 'F')
    37                     ++h[j];
    38                 else
    39                     h[j] = 0;
    40 
    41             for(j = 2; j <= col; ++j)
    42             {
    43                 t = j;
    44                 while(t > 1 && h[j] <= h[t-1])
    45                     t = l[t-1];
    46                 l[j] = t;
    47             }
    48             for(j = col-1; j > 0; --j)
    49             {
    50                 t = j;
    51                 while(t < col && h[j] <= h[t+1])
    52                     t = r[t+1];
    53                 r[j] = t;
    54             }
    55             for(j = 1; j <= col; ++j)
    56                 ans = max(ans, (r[j]-l[j]+1)*h[j]);
    57         }
    58         printf("%d
    ", ans * 3);
    59     }
    60     return 0;
    61 }
    代码君
  • 相关阅读:
    beta冲刺(6/7)
    beta冲刺(5/7)
    beta冲刺(4/7)
    beta(3/7)
    beta冲刺(2/7)
    beta冲刺(1/7)
    团队项目测评博客
    东华理工18级计科五班团队作业六
    东华理工18级计科五班团队作业五
    东华理工18级计科五班团队作业四
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/3876222.html
Copyright © 2011-2022 走看看