zoukankan      html  css  js  c++  java
  • bzoj 1567 [JSOI2008]Blue Mary的战役地图题解

    此题时限10秒,顿时惊呆,想到一个n^5解法,果断去写。

    用f[i1][j1][i2][j2]表示从a矩阵的(i1,j1)和b矩阵的(i2,j2)开始哪一行有多少相同的。

    然后再枚举i1,i2,j1,j2然后判断有几行。

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int n;
     5 int ans=0;
     6 long long a[60][60],b[60][60];
     7 int f[60][60][60][60];
     8 int main()
     9 {
    10     scanf("%d",&n);
    11     for(int i=1;i<=n;i++)
    12     {
    13         for(int j=1;j<=n;j++)
    14         scanf("%lld",&a[i][j]);
    15     }
    16     for(int i=1;i<=n;i++)
    17     {
    18         for(int j=1;j<=n;j++)
    19         scanf("%lld",&b[i][j]);
    20     }
    21     for(int i1=1;i1<=n;i1++)
    22     {
    23         for(int j1=1;j1<=n;j1++)
    24         {
    25             for(int i2=1;i2<=n;i2++)
    26             {
    27                 for(int j2=1;j2<=n;j2++)
    28                 {
    29                     int t=0;
    30                     while(t+j1<=n && t+j2<=n && a[i1][j1+t]==b[i2][j2+t])t++;
    31                     if(t<0)t=0;
    32                     f[i1][j1][i2][j2]=t;
    33                 }
    34             }
    35         }
    36     }
    37     for(int i1=1;i1<=n;i1++)
    38     {
    39         for(int j1=1;j1<=n;j1++)
    40         {
    41             for(int i2=1;i2<=n;i2++)
    42             {
    43                 for(int j2=1;j2<=n;j2++)
    44                 {
    45                     int now=f[i1][j1][i2][j2];
    46                     if(now==0)continue;
    47                     int t=1;
    48                     if(ans==0)ans=1;
    49                     while(now && t+i1<=n && t+i2<=n)
    50                     {
    51                         if(f[i1+t][j1][i2+t][j2]<now)now=f[i1+t][j1][i2+t][j2];
    52                         ans=max(ans,min(t+1,now));
    53                         t++;
    54                     }
    55                 }
    56             }
    57         }
    58     }
    59     printf("%d
    ",ans);
    60     return 0;
    61 }
    62             
    View Code
  • 相关阅读:
    PHP命名空间
    php各个版本的区别
    MySQL的读写分离---主从复制、主主复制
    redis的安装和php的redis扩展
    php的设计模式
    git命令详情
    memcache和redis的对比
    mysql性能优化
    MySQL的分区、分表、集群
    nginx的反向代理和负载均衡
  • 原文地址:https://www.cnblogs.com/sillygirl/p/3950151.html
Copyright © 2011-2022 走看看