hdu1505 City Game
一开始狂WA,后来随机了100个数据全过,无语了。。。
后来把ch改成ch[10]
过了。。。
这题的数据太黑了= =必须得用%s过滤
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<algorithm> using namespace std; int m,n; int d[1010][1010]; int left[1010]; int right[1010]; int main() { int total; scanf("%d",&total); getchar(); while(total--) { scanf("%d %d",&m,&n); int i,j; char ch[10]; getchar(); for(i=0;i<m;i++) { for(j=0;j<n;j++) { scanf("%s",ch); if(ch[0]=='F') { if(i==0) { d[i][j]=1; } else { d[i][j]=d[i-1][j]+1; } } if(ch[0]=='R') { d[i][j]=0; } } } int mmax=0; while(m) { for(i=0;i<n;i++) { left[i]=i; right[i]=i; } for(i=1;i<n;i++) { if(left[i]-1<0) { continue;; } while(d[m-1][left[i]-1]>=d[m-1][i]) { left[i]=left[left[i]-1]; if(left[i]-1<0) { break; } } } for(i=n-2;i>=0;i--) { if(right[i]+1>n-1) { continue; } while(d[m-1][right[i]+1]>=d[m-1][i]) { right[i]=right[right[i]+1]; if(right[i]+1>n-1) { break; } } } int temp; for(i=0;i<n;i++) { temp=d[m-1][i]*(right[i]-left[i]+1); if(mmax<temp) { mmax=temp; } } m--; } printf("%d\n",mmax*3); } return 0; }