#HDU 1505 dp 最大子矩阵
2017-07-24 16:22
267 查看
City Game
题意:在一个由”R”、”F”组成的大矩阵中求出一个最大的全是”F”的最大子矩阵。
分析:对于这个题目,我们可以参照HDU 1506,类型相同,只需转换一下就可以做。对于每一行,我们求出每一个元素向上可以达到的最大高度( 即 HDU 1506 中的柱形的高度),这样就转化成m组柱形,对每一组都去求出最大的子矩阵即可。
TIPS:答案是“m组中最大的矩阵 * 3”;
代码如下:
JNU-ACM-ICPC
WYC
题意:在一个由”R”、”F”组成的大矩阵中求出一个最大的全是”F”的最大子矩阵。
分析:对于这个题目,我们可以参照HDU 1506,类型相同,只需转换一下就可以做。对于每一行,我们求出每一个元素向上可以达到的最大高度( 即 HDU 1506 中的柱形的高度),这样就转化成m组柱形,对每一组都去求出最大的子矩阵即可。
TIPS:答案是“m组中最大的矩阵 * 3”;
代码如下:
#include <algorithm> #include <bitset> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <map> #include <queue> #include <set> #include <stack> #include <string> #define INF 0x3f3f3f3f using namespace std; typedef long long ll; #define MAXN 1005 int a[MAXN][MAXN],L[MAXN][MAXN],R[MAXN][MAXN]; int main(){ int ans,temp,T,m,n; scanf("%d",&T); while(T--){ memset(a,0,sizeof(a)); memset(L,0,sizeof(L)); memset(R,0,sizeof(R)); scanf("%d%d",&m,&n); for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ char s[5]; scanf("%s",s); if(s[0]=='F') a[i][j]=a[i-1][j]+1;//当前向上的最大连续高度 else a[i][j]=0; } } /* for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cout<<a[i][j]<<" "; } cout<<endl; }*/ ans=0; for(int i=1;i<=m;i++){ L[i][1]=1; for(int j=2;j<=n;j++){ int k=j; while(k>1&&a[i][j]<=a[i][k-1])k=L[i][k-1]; L[i][j]=k; } R[i] =n; for(int j=n-1;j>=1;j--){ int k=j; while(k<n&&a[i][j]<=a[i][k+1])k=R[i][k+1]; R[i][j]=k; } temp=0; for(int j=1;j<=n;j++){ if( temp < a[i][j]*(R[i][j]-L[i][j]+1) ){ temp = a[i][j]*(R[i][j]-L[i][j]+1); } } if(ans<temp)ans=temp; } printf("%d\n",ans*3); } return 0; }
JNU-ACM-ICPC
WYC
相关文章推荐
- hdu 1505(dp求最大子矩阵)
- HDU 1505 City Game-dp-(最大子矩阵模型)
- #HDU 1506 dp求最大子矩阵
- HDU 1505 City Game(DP求二维最大子矩阵)
- #HDU 2870 dp最大子矩阵
- hdu2870(dp求最大子矩阵)
- 51nod 1051 最大子矩阵和(基础dp)
- HDU 1081 To The Max(dp最大子矩阵和)
- bzoj1084: [SCOI2005]最大子矩阵(dp)
- 51Nod 最大子矩阵和 | DP
- ACM模板——DP求解最长子段 最大子矩阵
- 51Nod 1051 最大子矩阵和(二维最大字段和dp)
- HDU:1559 最大子矩阵(动态规划DP)
- 最大子矩阵和(HD 1559,DP,给定子矩阵行列,O(n^2))
- 动态规划求最大子矩阵详解(hdu 1505,1506 , 2870)
- hdu 1559 最大子矩阵 (简单dp)
- HDU2870----DP_最大子矩阵系列(同HDU1505,1506)
- 【BZOJ】1084: [SCOI2005]最大子矩阵(DP)
- hdu 1505 单调栈(最大子矩阵)
- poj 1050 To the Max_dp求最大子矩阵和