2491 玉蟾宫
2491 玉蟾宮
?
時間限制: 1 s 空間限制: 64000 KB 題目等級 : 大師 Master 題目描述 Description有一天,小貓rainbow和freda來到了湘西張家界的天門山玉蟾宮,玉蟾宮宮主藍兔盛情地款待了它們,并賜予它們一片土地。
  這片土地被分成N*M個格子,每個格子里寫著'R'或者'F',R代表這塊土地被賜予了rainbow,F代表這塊土地被賜予了freda。
  現在freda要在這里賣萌。。。它要找一塊矩形土地,要求這片土地都標著'F'并且面積最大。
  但是rainbow和freda的OI水平都弱爆了,找不出這塊土地,而藍兔也想看freda賣萌(她顯然是不會編程的……),所以它們決定,如果你找到的土地面積為S,它們每人給你S兩銀子。
  第一行兩個整數N,M,表示矩形土地有N行M列。
  接下來N行,每行M個用空格隔開的字符'F'或'R',描述了矩形土地。
輸出一個整數,表示你能得到多少銀子,即(3*最大'F'矩形土地面積)的值。
樣例輸入 Sample Input5 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
45
數據范圍及提示 Data Size & Hint  對于50%的數據,1<=N,M<=200
  對于100%的數據,1<=N,M<=1000
?
來源:Nescafe 20
1 #include<cmath> 2 #include<cstdio> 3 #include<iostream> 4 using namespace std; 5 int a[10000][10000]; 6 int leftt[10000],rightt[10000],h[10000]; 7 int ans; 8 int main() 9 { 10 int n,m; 11 cin>>n>>m; 12 for(int i=1;i<=n;i++) 13 { 14 for(int j=1;j<=m;j++) 15 { 16 char s; 17 cin>>s; 18 if(s=='R') 19 { 20 a[i][j]=1; 21 } 22 else a[i][j]=0; 23 } 24 } 25 for(int i=1;i<=m;i++) 26 { 27 leftt[i]=1; 28 rightt[i]=m; 29 } 30 31 for(int i=1;i<=n;i++) 32 { 33 int l=0; 34 int r=m+1; 35 for(int j=1;j<=m;j++) 36 { 37 if(a[i][j]==1) 38 { 39 h[j]=0; 40 l=j; 41 leftt[j]=1; 42 } 43 else { 44 h[j]++; 45 leftt[j]=max(leftt[j],l+1); 46 } 47 } 48 for(int j=m;j>=1;j--) 49 { 50 if(a[i][j]==1) 51 { 52 r=j; 53 rightt[j]=m; 54 } 55 else 56 { 57 rightt[j]=min(rightt[j],r-1); 58 } 59 ans=max(ans,(rightt[j]-leftt[j]+1)*h[j]); 60 61 } 62 } 63 cout<<ans*3; 64 }?
轉載于:https://www.cnblogs.com/lyqlyq/p/6739871.html
總結
 
                            
                        - 上一篇: ABAP表生成Java实体Bean
- 下一篇: 推荐个 Java 开源商城项目,这个是真
