标签:
Description
Input
Output
Sample Input
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
Sample Output
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; int d[1010][1010]; int l[1010]; int r[1010]; int main() { int n; cin>>n; while(n--) { int a,b; cin>>a>>b; // memset(d,0,sizeof(d)); for(int i=0; i<a; i++) { for(int j=0; j<b; j++) { char c[2]; cin>>c; if(c[0]==‘F‘) d[i][j]=1; else d[i][j]=0; } } /* 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 (F=1,R=0,方便求和) 1 2 2 2 2 2 0 0 0 1 1 1 转化完就是右边矩阵 0 0 0 3 3 3 1 1 1 1 1 1 1 1 1 4 4 4 1 1 1 1 1 1 2 2 2 5 5 5 */ for(int i=1; i<a; i++) { for(int j=0; j<b; j++) { if(d[i][j]!=0) d[i][j]=d[i-1][j]+1; } } /* printf("--------------->\n"); for(int i=0; i<a; i++){ for(int j=0; j<b; j++) printf("%d ",d[i][j]); printf("\n"); } printf("----------------->\n");*/ int max=0; for(int i=0; i<a; i++){ for(int j=0; j<b; j++){ l[j]=j; while(l[j]>0&&d[i][l[j]-1]>=d[i][j]) l[j]=l[l[j]-1]; } for(int j=b-1; j>-1; j--){ r[j]=j; while(r[j]<b-1&&d[i][r[j]+1]>=d[i][j]) r[j]=r[r[j]+1]; } for(int j=0; j<b; j++) if(max<((r[j]-l[j]+1)*d[i][j])) max=((r[j]-l[j]+1)*d[i][j]); } cout<<max*3<<endl; } return 0; }
HDU 1505 City Game (hdu1506 dp二维加强版)
标签:
原文地址:http://www.cnblogs.com/13224ACMer/p/4984864.html