[USACO5.3]巨大的牛棚Big Barn

[TimeGate]

https://www.luogu.org/problem/P2701

【解题思路】

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

f(i,j)表示以(i,j)为右下角的最大正方形的边长。

【code】

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 using namespace std;  5 int n,t,x,y,ans=-1<<29;  6 bool vis[1005][1005];  7 int f[1005][1005];  8 int main(){  9     //freopen("2701.in","r",stdin); 10     //freopen("2701.out","w",stdout);
11     scanf("%d%d",&n,&t); 12     while(t--){ 13         scanf("%d%d",&x,&y); 14         vis[x][y]=true; 15  } 16     for(register int i=1;i<=n;i++){ 17         for(register int j=1;j<=n;j++){ 18             if(!vis[i][j]) 19                 f[i][j]=min(f[i-1][j-1],min(f[i][j-1],f[i-1][j]))+1; 20             ans=max(ans,f[i][j]); 21  } 22  } 23     printf("%d\n",ans); 24     return 0; 25 }

相关文章

自1998年我国取消了福利分房的政策后,房地产市场迅速开展蓬...
文章目录获取数据查看数据结构获取数据下载数据可以直接通过...
网上商城系统MySql数据库设计
26个来源的气象数据获取代码
在进入21世纪以来,中国电信业告别了20世纪最后阶段的高速发...