标签:des style blog http io color ar os java
2 5 6 R F F F F F F F F F F F R R R F F F F F F F F F F F F F F F 5 5 R R R R R R R R R R R R R R R R R R R R R R R R R
45 0
hdu1506的加强版,题意让求“F”组成的一整块矩形的最大面积,可以把同一列的F看成一个单位矩形,高度为H,
按照1506的思路就能求解了。
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
#define ll __int64
#define N 1005
const int inf=0x7fffffff;
int h[N][N],a[N][N];
int l[N][N],r[N][N];
int n,m;
int main()
{
int i,j,t,tt;
char ch;
scanf("%d",&tt);
while(tt--)
{
scanf("%d%d",&n,&m);
memset(h[0],0,sizeof(h[0]));
for(i=1;i<=n;i++)
{
h[i][0]=h[i][m+1]=-1;
for(j=1;j<=m;j++)
{
cin>>ch;
if(ch=='F')
{
h[i][j]=h[i-1][j]+1;
a[i][j]=1;
}
else
h[i][j]=a[i][j]=0;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
l[i][j]=r[i][j]=0;
if(a[i][j]==0)
continue;
t=j;
while(h[i][j]<=h[i][t]&&j>0)
t--;
l[i][j]=t+1;
t=j;
while(h[i][j]<=h[i][t]&&j<=m)
t++;
r[i][j]=t-1;
}
}
int ans=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j])
{
t=(r[i][j]-l[i][j]+1)*h[i][j];
ans=max(ans,t);
}
}
}
printf("%d\n",ans*3);
}
return 0;
}
标签:des style blog http io color ar os java
原文地址:http://blog.csdn.net/u011721440/article/details/41045469