zoukankan      html  css  js  c++  java
  • [luoguP2701] [USACO5.3]巨大的牛棚Big Barn(DP)

    传送门

    经典问题。

    找出最大的不包含 1 的正方形。

    f[i][j] 表示 以 (i,j) 结尾的最大的不包含 1 的正方形

    f[i][j] = min(f[i - 1][j], f[i][j - 1], f[i - 1][j - 1]) + 1

    画个图意会一下

    ——代码

     1 #include <cstdio>
     2 #include <iostream>
     3 
     4 const int MAXN = 1001;
     5 int n, m, ans;
     6 int f[MAXN][MAXN];
     7 bool a[MAXN][MAXN];
     8 
     9 inline int read()
    10 {
    11     int x = 0, f = 1;
    12     char ch = getchar();
    13     for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
    14     for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
    15     return x * f;
    16 }
    17 
    18 inline int min(int x, int y)
    19 {
    20     return x < y ? x : y;
    21 }
    22 
    23 inline int max(int x, int y)
    24 {
    25     return x > y ? x : y;
    26 }
    27 
    28 int main()
    29 {
    30     int i, j, x, y;
    31     n = read();
    32     m = read();
    33     for(i = 1; i <= m; i++)
    34     {
    35         x = read();
    36         y = read();
    37         a[x][y] = 1;
    38     }
    39     for(i = 1; i <= n; i++)
    40         for(j = 1; j <= n; j++)
    41             if(!a[i][j])
    42                 f[i][j] = min(f[i - 1][j - 1], min(f[i - 1][j], f[i][j - 1])) + 1,
    43                 ans = max(ans, f[i][j]);
    44     printf("%d
    ", ans);
    45     return 0;
    46 } 
    View Code
  • 相关阅读:
    centos7添加firewalld规则
    centos7安装redis5
    Oracle 监听
    创建Oracle表空间及用户
    nginx+keepalive
    oracle 修改端口
    Oracle新建数据库
    Redhat7.5安装JBOSS4.2.0
    kubernetes的一些基本命令
    安装python3.6后使用pip报错
  • 原文地址:https://www.cnblogs.com/zhenghaotian/p/6908245.html
Copyright © 2011-2022 走看看