• [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
  • 相关阅读:
    MySQL-基础知识整理
    设计模式-适配器模式
    MySQL
    MySQL-5.7 填坑
    MySQL
    Oracle
    SQL 注入
    Apache JMeter
    AppScan
    DNS 搜索
  • 原文地址:https://www.cnblogs.com/zhenghaotian/p/6908245.html
Copyright © 2020-2023  润新知