#P1964. City Game

    ID: 965 传统题 1000ms 256MiB 尝试: 2 已通过: 2 难度: 10 上传者: 标签>数据结构单调栈Southeastern Europe 2004

City Game

题目描述:

描述

鲍勃是一位策略游戏编程专家。在他新开发的城市建造游戏中,游戏环境如下:一座城市由多个区域构成,每个区域里有街道、树木、工厂和建筑物。区域中仍有一些未被占用的空间。这款游戏的策略任务是从这些空闲空间中获取尽可能多的租金。要想获得租金,你必须建造建筑物,而且这些建筑物只能是矩形的,并且要尽可能地长和宽。鲍勃正试图找到一种方法,在每个区域中建造出最大的建筑物。但他遇到了一些问题 —— 在他建造的区域内,不允许破坏已有的建筑物、树木、工厂和街道。

每个区域都有其宽度和长度。该区域被划分成由大小相等的正方形单元组成的网格。在你建造建筑物的每个单元上所获得的租金是 33 美元。

你的任务是帮助鲍勃解决这个问题。整个城市被划分为 KK 个区域。每个区域都是矩形的,并且具有不同的网格尺寸,各自有其长度 MM 和宽度 NN。已被占用的单元用符号 RR 标记。未被占用的单元用符号 FF 标记。

输入:

输入的第一行包含一个整数 KK,它决定了数据集的数量。接下来的若干行包含各个区域的描述信息。一个区域的描述方式如下:第一行包含两个整数,即区域的长度 M1000M\leq1000 和宽度 N1000N\leq1000,两个整数之间用一个空格隔开。

接下来的 MM 行,每行包含 NN 个符号,这些符号标记了网格中已占用或空闲的单元,符号之间用一个空格隔开。所使用的符号如下:R ——R —— 已占用的单元 F ——F —— 空闲的单元在每个区域描述的末尾,有一条分隔行。

输出:

对于输入中的每个数据集,在标准输出的单独一行上打印一个整数,该整数表示在该数据集所编码的区域中建造最大建筑物所能获得的利润。

输入数据1

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

输出数据1

45
0

来源:

东南欧2004