zoukankan      html  css  js  c++  java
  • hoj1644 City Game dp

    周赛的题目,思想

    011111

    111111

    000111

    111111

    111111

    转换为

    011111

    122222

    000333

    111444

    222555

    然后按该位置的高度向两边扩展,当遇到小于该高度时,停止扩展,然后用右边的下标减左边的下标加一,

    再乘以当前的高度即为所求,dp的实现是在计算第二个矩阵时用到的,只是简单的

    h[i,j] = h[i-1,j]+1      (map[i][j]=='F')

     

    #include <cstring>

    #include <iostream>

    #include <string>

    using namespace std;

    #define X 1005

    string s;

    int map[X][X],dp[X][X],l[X],r[X],m,n;

    int main()

    {

       freopen("sum.in","r",stdin);

       freopen("sum.out","w",stdout);

       int t;

       cin>>t;

       while(t--)

       {

          cin>>m>>n;

          memset(map,0,sizeof(map));

          for(int i=1;i<=m;i++)

          {

             for(int j=1;j<=n;j++)

             {

                cin>>s;

                if(s=="F")

                    map[i][j] = 1;

             }

          }

          for(int i=2;i<=m;i++)

             for(int j=1;j<=n;j++)

                if(map[i][j])

                    map[i][j] = map[i-1][j]+1;

          int ans = 0;

          for(int i=1;i<=n;i++)

             if(map[1][i])

                ans = 1;

          for(int i=2;i<=m;i++)

          {

             for(int j=1;j<=n;j++) //向左扩展

             {

                l[j] = j;

                while(l[j]>1&&map[i][l[j]-1]>=map[i][j])

                    l[j]--;

             }

             for(int j=1;j<=n;j++) //向右扩展

             {

                r[j] = j;

                while(r[j]<n&&map[i][r[j]+1]>=map[i][j])

                    r[j]++;

             }

             for(int j=1;j<=n;j++) //更新当前的最大矩阵

                if((r[j]-l[j]+1)*map[i][j]>ans)

                    ans = (r[j]-l[j]+1)*map[i][j];

          }

          cout<<ans*3<<endl;       //3倍数输出

       }

       return 0;

    }

  • 相关阅读:
    MySQL-5.6.xx-winx64 免安装版配置方法
    winForm窗体最大化的设置
    foreach内部做的一点事
    sqlserver创建同义词
    sql server 数据库创建链接服务器
    文件比对工具——WinMerge
    Devos病毒解决办法(转)
    设计模式学习笔记-单例模式
    Aspose.Word for DotNet 定位到每页,画笔 移动到某页。
    Word 固定文字或签名在底部
  • 原文地址:https://www.cnblogs.com/yejinru/p/2406145.html
Copyright © 2011-2022 走看看