【最大子矩阵】hdu 2870
2011-08-26 02:32
453 查看
该题首先转化为只含有a,b,c的矩阵,然后对每一行dp求该列连续相同字母的最大高度,然后就可以每行每行地gao,又转化为求最大矩阵面积,就像hdu 1506一样,迭代地求左右>=当前高度的下标,hdu 1506代码看这里
#include <list> #include <map> #include <set> #include <queue> #include <string> #include <deque> #include <stack> #include <algorithm> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <limits.h> #include <time.h> #include <string.h> using namespace std; #define LL long long #define PI acos(-1.0) #define Max INT_MAX #define Min INT_MIN #define eps 1e-8 #define FRE freopen("a.txt","r",stdin) #define N 1010 int max(int a,int b){return a>b?a:b;} char str ; int dp ; int l ,r ; int n,m; int ans; void gao(){ int i,j,k; for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ l[j]=j; r[j]=j; } dp[i][0]=dp[i][m+1]=-1; for(j=1;j<=m;j++) while(dp[i][l[j]-1] >= dp[i][j]) l[j]=l[l[j]-1]; for(j=m;j>=1;j--) while(dp[i][r[j]+1] >= dp[i][j]) r[j]=r[r[j]+1]; for(j=1;j<=m;j++) ans=max(ans,(r[j]-l[j]+1)*dp[i][j]); } } int main(){ while(scanf("%d%d",&n,&m)!=EOF){ int i,j; for(i=1;i<=n;i++)scanf("%s",str[i]+1); for(i=0;i<=m;i++)dp[0][i]=0; ans=0; for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ if(str[i][j]=='a' || str[i][j]=='w' || str[i][j]=='y' || str[i][j]=='z') dp[i][j]=dp[i-1][j]+1; else dp[i][j]=0; } } gao(); for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ if(str[i][j]=='b' || str[i][j]=='w' || str[i][j]=='x' || str[i][j]=='z') dp[i][j]=dp[i-1][j]+1; else dp[i][j]=0; } } gao(); for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ if(str[i][j]=='c' || str[i][j]=='x' || str[i][j]=='y' || str[i][j]=='z') dp[i][j]=dp[i-1][j]+1; else dp[i][j]=0; } } gao(); printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU 2870 Largest Submatrix (求最大子矩阵变形,可变值)枚举每种情况
- HDU-2870 Largest Submatrix (线性dp 最大01矩阵)(2009 Multi-University Training Contest 7 )
- HDU 2870【DP_求最大矩阵】
- HDU2870_Largest Submatrix【最大完全子矩阵】
- HDU 2870 Largest Submatrix(最大完全子矩阵之不可移动列)
- HDU 2870 Largest Submatrix(最大子矩阵面积)
- HDU 2870 (最大0 1 矩阵面积)
- HDU 1505 1506 2830 2870求最大矩阵面积 DP
- Largest Submatrix-最大子矩阵-HDU-2870
- hdu 1081 To The Max最大矩阵和(动态规划)
- HDU 2859 Phalanx 求最大的对称子矩阵的大小
- HDU 4328 Cut the cake 最大相同子矩阵, 悬线法
- POJ 1964&HDU 1505&HOJ 1644 City Game(最大0,1子矩阵和总结)
- hdu 2870(求变化后最大矩形)
- hdu 2870 1506增强版 求最大矩形
- HDU 1003 Max Sum && HDU 1081 To The Max 一维子串最大和& 二维矩阵最大和
- hdu - To The Max-1081 - 最大子矩阵 - 最大连续子序列和变形/动态规划
- HDU-2870最大矩形问题(四)
- hdu 1559 最大子矩阵
- HDU 4307 Matrix 最小割模型求未知矩阵最大值