USACO Section 5.3 Big Barn - DP...
来源:互联网 发布:知乎 装修网站 编辑:程序博客网 时间:2024/05/22 07:58
看到这题就想到了USACO3.3 的 home on the range....但这题的数据量更大...用之前的方法显然效率不能满足了...之前用的是优化BFS...这里用的是DP...
思路也很简单...DP的目的无非是要利用前面的结果来直接推出后面的结果而减少甚至排出重复计算与判断...这里用M [ i ] [ j ] 表示 ( i,j ) 点为正方形右下方的点时能得到的最大正方形( ( i,j ) 这个点不是障碍 )...那么M [ i ] [ j ]的值实际上就是 M [ i-1 ][ j-1 ] M [ i-1 ][ j ] M [ i ][ j-1 ] 三个中的最小值+1...试想一下.. 点 ( i-1,j-1 )可得到对 ( i , j ) 左上角这个一块的判断情况...而 M [ i-1 ] [ j ] 能得到对当前点 ( i,j ) 上右一条的判断结果..M [ i ] [ j-1] ] 得到当前点 ( i,j ) 左下一条的判断结果...综合取交集就是 M [ i ][ j ] 能得到的最到正方形边长..
所以如此..从左上角的点顺序判断更新到右下角的点..最复杂的数据也只需要10^6次循环...可以承受...
Program:
/* ID: zzyzzy12 LANG: C++ TASK: bigbrn*/ #include<iostream> #include<istream> #include<stdio.h> #include<string.h> #include<math.h> #include<stack>#include<map>#include<algorithm> #include<queue> #define oo 2000000005 #define ll long long #define pi (atan(2)+atan(0.5))*2 using namespace std;int m,n,arc[1006][1006]; int ans,M[1006][1006];int main() { freopen("bigbrn.in","r",stdin); freopen("bigbrn.out","w",stdout); int i,j; memset(arc,0,sizeof(arc)); memset(M,0,sizeof(M)); scanf("%d%d",&n,&m); while (m--) { scanf("%d%d",&i,&j); arc[i][j]=1; } ans=0; for (i=1;i<=n;i++) for (j=1;j<=n;j++) if (!arc[i][j]) { M[i][j]=min(M[i-1][j-1],min(M[i][j-1],M[i-1][j]))+1; if (M[i][j]>ans) ans=M[i][j]; } printf("%d\n",ans); return 0; }
- USACO Section 5.3 Big Barn - DP...
- USACO 5.3 Big Barn dp
- usaco 5.3 Big Barn(简单DP)
- Section 5.3 Big Barn
- usaco 5.3.4 Big Barn
- usaco training 5.3.4 Big Barn 题解
- usaco Big Barn
- USACO Section 1.3 Barn Repair - 卡了一年的DP...
- [USACO]Section 1.3 Barn Repair
- USACO Section 1.3 Barn Repair
- USACO Section 1.3 Barn Repair
- USACO Section 1.3 - Barn Repair
- USACO-Section 1.3 Barn Repair[...]
- USACO Section 1.3 Barn Repair
- USACO Big Barn 解题报告
- 【USACO题库】5.3.4 Big Barn巨大的牛棚
- 【USACO题库】5.3.4 Big Barn巨大的牛棚
- hdu 4846 Big Barn【dp】
- VBS递归删除文件及文件夹(默认是删除VC的临时文件的配置)
- 从 C 开始 Android NDK 实战 [4] : JNI
- 第16周报告1(任务2):冒泡排序算法(指针)
- 优化SQL查询:如何写出高性能SQL语句
- history.back()在IE6中失效的解决方法
- USACO Section 5.3 Big Barn - DP...
- 类中的 抽象方法 与抽象类 使用关键字 abstract
- 第16周报告2(任务3) 求出一个数所有的奇数因子
- 权限
- Windows XP下桌面图标间距变大的解决方法
- VC编译选项 MT MTd MD MDd 全面分析
- 指针排名
- 从 C 开始 Android NDK 实战 [5] : JNI 实例
- Webkit for Android