[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 17 18 inline int min(int x, int y) 19 22 23 inline int max(int x, int y) 24 27 28 int main() 29 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\n", ans); 45 return 0; 46 }
View Code



上一篇:[luoguP2854] [USACO06DEC]牛的过山车Cow Roller Coaster(DP + sort)

下一篇:[luoguP2659] 美丽的序列(单调栈)


DP
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图