首先预处理每个F点左右,下一共有多少个F点,然后

对于每个为0的点(R),从这个点开始,一直到这个点

下面第一个R点,这一区间中的min(左),min(右)更新答案。

ps:我估计这道题数据有的格式不对,开始过不去,后来改了读入

就能过了

/**************************************************************
    Problem:
    User: BLADEVIL
    Language: Pascal
    Result: Accepted
    Time: ms
    Memory: kb
****************************************************************/
 
//By BLADEVIL
var
    n, m                        :longint;
    map                         :array[..,..] of longint;
    ans, len1, len, len2        :longint;
    left, right, down           :array[..,..] of longint;
     
function max(a,b:longint):longint;
begin
    if a>b then max:=a else max:=b;
end;
 
function min(a,b:longint):longint;
begin
    if a>b then min:=b else min:=a;
end;
     
procedure init;
var
    i, j, k                     :longint;
    ss                          :ansistring;
begin
    readln(n,m);
    for i:= to n do
    begin
        readln(ss);
        k:=;
        for j:= to length(ss) do
            if ss[j]<>' ' then
            begin
                inc(k);
                if ss[j]='F' then map[i,k]:= else map[i,k]:=;
            end;
    end;
     
    for i:= to n do
        for j:= to m do
            if map[i,j]= then left[i,j]:= else left[i,j]:=left[i,j-]+;
             
    for i:=n downto do
        for j:=m downto do
        begin
            if map[i,j]= then down[i,j]:= else down[i,j]:=down[i+,j]+;
            if map[i,j]= then right[i,j]:= else right[i,j]:=right[i,j+]+;
        end;
     
end;
 
procedure main;
var
    i, j, k                     :longint;
begin
    for i:= to n do
        for j:= to m do
            if map[i,j]= then
            begin
                len:=;
                len1:=maxlongint div ;
                len2:=maxlongint div ;
                for k:= to down[i+,j] do
                begin
                    len1:=min(len1,left[i+k,j]);
                    len2:=min(len2,right[i+k,j]);
                    ans:=max(ans,(len1+len2-)*k);
                end;
                if len1>=maxlongint div then continue;
                inc(len,len1);
                ans:=max(ans,(len-)*down[i+,j]);
            end;
    writeln(ans*);
end;
 
begin
    init;
    main;
end.

最新文章

  1. 分享个win平台cocos2d-x创建项目的快捷方式
  2. 在Jena框架下基于MySQL数据库实现本体的存取操作
  3. EntityFramwork6连接MySql错误
  4. 【现代程序设计】【homework-02】【11061027】
  5. SQL自动创建表和自动插入字段实例
  6. jsp截取字符串
  7. 《R实战》读书笔记三
  8. RegExp(正则表达式)常用知识点小结
  9. Python Celery队列
  10. 用C语言画一个心
  11. vue 项目中引用百度地图
  12. P1551 亲戚题解
  13. java程序启动 环境属性的获取
  14. php+mysql+nginx+liunx 服务搭建
  15. hdu-3294(最长回文子串)
  16. oracle 分析函数 keep(dense_rank first/last)
  17. vm虚拟机下ubuntu连接上ssr
  18. Python内置类型(6)——生成器
  19. 实习培训——Java异常处理(8)
  20. ESLint 规则详解(二)

热门文章

  1. kvm介绍
  2. 用过的一些js函数[备份用的]
  3. PHP+ajax聊天室源码!支持长轮循跟定时请求两种
  4. Noise,Error,wighted pocket Algorithm
  5. UVA 10970 第一次比赛 D题 (后面才补的)
  6. 对Iframe和图表设置高度的优质代码
  7. shelll函数求两个输入数字之和
  8. hdu 2612 Find a way
  9. 如何用nodejs写入mysql 的blob格式的数据
  10. ExtJs桌面组件(DeskTop)