hdu 1505 City Game dp
阿新 • • 發佈:2019-01-23
給你一個矩陣,讓你找最大的矩形面積,F代表3,R代表 0,。
輸入用%s 輸入
#include<stdio.h> #include<stack> #include<string.h> #include<algorithm> #define maxn 1010 using namespace std; int ma[maxn][maxn]; int h[maxn]; int fact(int m) { int a,sum=0; stack<int>q; for(int i=0; i<=m;) { if(q.empty()||h[i]>h[q.top()]) { q.push(i); i++; } else { a=q.top(); q.pop(); sum=max(sum,h[a]*(q.empty()?i:i-q.top()-1)); } } return sum; } int main() { int n,m,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); char ch[3]; for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { scanf("%s",&ch); if(ch[0]=='R')ma[i][j]=0; else ma[i][j]=1; } } int sum=0; memset(h,0,sizeof(h)); for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { if(ma[i][j]==0)h[j]=0; else h[j]+=1; } sum=max(sum,fact(m)); } printf("%d\n",sum*3); } return 0; }