• 【训练赛】浣熊


    题目描述

    从前有一只可爱的小浣熊居住在美丽的森林里。他听说小鹦鹉要旅行到另一只鹦鹉家做客,也想邀请朋友们来自己家。为此,小浣熊想建一栋新房子。他找到了一块比较大的平地,不过这块地上还是有一些地方不能建屋。不妨把这块空地看作是由N行M列等大小的正方形格子组成。现在,小熊已经把不能建房子的地方都标记了出来,他想找出一块长方形的空地来建造,同时,他希望这块地的面积最大。你能帮助他么?

    输入

    输入第一行依次包含两个正整数N和M。
    下面N行每行有M个空格隔开的数,分别描述了整块地的每一个方格的情况。每个数非0即1,若为1表示该格可以被选择,0表示该格有障碍而不能用。

    输出

    输出仅一行一个整数,为最大能够找到的长方形的面积。

    样例输入

    5 5
    1 1 1 1 1
    1 0 0 1 1
    0 1 1 1 1
    0 1 1 0 1
    1 1 1 1 1
    

    样例输出

    6
    

    提示

    对于50%的数据,有1 ≤ N,M ≤ 10
    对于100%的数据,有1 ≤ N,M ≤ 50

     
    思路:一开始没做出来= =!后来看了队里另外一个人的代码才茅塞顿开,还有这种操作!
    首先预处理矩形(处理方式见代码)
    处理完毕后,样例应为:
    2 0 1 3 5
    1 0 0 2 4
    0 3 3 1 3
    0 2 2 0 2
    1 1 1 1 1
    后枚举每个b[i][j],再枚举k,j<=k<=m,去b[i][j]与b[i][k]中最小值,为长,宽为k-j+1,相乘则是矩形面积。
    #include <iostream>
     
    using namespace std;
     
    int main()
    {
        int n,m;
        int a[55][55]={0};
        int b[55][55]={0};
        cin>>n>>m;
        int i,j;
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=m;j++)
            {
                cin>>a[i][j];
            }
        }
        for(j=1;j<=m;j++)
        {
            b[n][j]=a[n][j];
        }
        for(i=n-1;i>0;i--)
        {
            for(j=1;j<=m;j++)
            {
                if(a[i][j]!=0)
                {
                    b[i][j]=b[i+1][j]+1;
                }
                else
                {
                    b[i][j]=0;
                }
            }
        }
        int ans=0;
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=m;j++)
            {
                int now=b[i][j];
                for(int k=j;k<=m;k++)
                {
                    now=min(now,b[i][k]);
                    ans=max(ans,now*(k-j+1));
                }
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    

      

  • 相关阅读:
    windows系统桌面美化
    Jenkins 显示语言-英文切换中文
    Jenkins 任务定时
    Jenkins 结合 ANT 发送测试报告
    ANT 的使用
    虚拟机与主机之间文件传输
    【译】使用WebDriver采样器将JMeter与Selenium集成
    Newman基本使用
    autoIt中文手册
    selenium控制超链接在当前标签页中打开或重新打开一个标签页
  • 原文地址:https://www.cnblogs.com/zyf3855923/p/8425703.html
Copyright © 2020-2023  润新知