poj 1964 DP 求最大子矩形面积

来源:互联网 发布:淘宝最迟几天发货 编辑:程序博客网 时间:2024/05/16 01:25
#include<cstdio>#include<cstring>#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))int G[1010][1010];int right[1010][1010],left[1010][1010],up[1010][1010];int main(){int T;scanf("%d",&T);while(T--){int m,n;scanf("%d%d",&m,&n);for(int i=0;i<m;i++)for(int j=0;j<n;j++){char ch=getchar();while(ch!='F'&&ch!='R')ch=getchar();G[i][j]=ch=='F'?0:1;}int res=0;for(int i=0;i<m;i++){int lo=-1,ro=n;for(int j=0;j<n;j++)if(G[i][j]==1){up[i][j]=left[i][j]=0;lo=j;}else    {    up[i][j]=i==0?1:up[i-1][j]+1;    left[i][j]=i==0?lo+1:MAX(left[i-1][j],lo+1);}for(int j=n-1;j>=0;j--){if(G[i][j]==1){right[i][j]=n;ro=j;}else{right[i][j]=i==0?ro-1:MIN(right[i-1][j],ro-1);res=MAX(res,up[i][j]*(right[i][j]-left[i][j]+1));}}}printf("%d\n",res*3);}return 0;}

原创粉丝点击