【问题标题】:SPOJ WATER : Developing a BFS algorithmSPOJ WATER:开发 BFS 算法
【发布时间】:2012-06-04 20:17:09
【问题描述】:

我正在尝试从 SPOJ 解决以下问题:

在一个包含 nm 个场的矩形网格上,放置了 nm 个长方体,一个 每个字段上的长方体。每个长方体的一个底面覆盖一个场及其 表面积等于一平方英寸。相邻场上的长方体粘附 彼此如此接近,以至于它们之间没有间隙。一个沉重的 大雨倾泻在建筑物上,以至于在某些地区出现了水坑 出现了。

任务

编写一个程序:

  • 从标准输入中读取棋盘的大小和放置在场上的长方体的高度
  • 计算最大水量,雨后可能会聚集在水坑中
  • 将结果写入标准输出。

输入

测试用例个数t在输入的第一行,然后t测试 案例后面用空行分隔。在每个的第一行 测试用例两个正整数 1

输出

你的程序应该为每个案例写一个等于 最大水量(以立方英寸为单位),可能聚集在 施工中的水坑。

Example

Sample input:
1
3 6
3 3 4 4 4 2
3 1 3 2 1 4
7 3 1 6 4 1

Sample output:
5

我正在使用 BFS 来添加从边界元素流入水坑的水量(如果找到任何路径)。但我无法处理水坑可能像两个连续的长方体的情况。任何人都可以帮我处理这个案子吗?

【问题讨论】:

    标签: algorithm breadth-first-search


    【解决方案1】:

    这是我对这个问题的回答。为方便起见,我假设索引从 (1,1) 到 (M,N)

    正如你可以想象的水流一样,水只能从高方体流向低方体(没有反向方向,即来自低方体的水会碰到高方体的壁并停在那里)。

    所以我们构建图 G = (V,E) 使得 V 是 M x N 个顶点,即矩阵上的长方体。连接长方体 i(th) 到长方体 j(th) 时的边是连接的(仅 1 路) height(i) >= height(j) 和(i 和 j 物理连接)

    所以问题只是一个简单的 BFS。

    顺便说一句,我发现另一个也解决了这个问题。请看一下

    http://www.spojsolutions.com/212-water-among-cubes/

    【讨论】:

    • 是的,我猜你给出的实现是正确的,但是当水坑由多个长方体组成时就会出现问题......在这种情况下水会流向哪里?例如,高度为 3 行 4 列:{(4,4,4,4),(4,1,1,4),(4,4,4,4)} .. (4-1)单位水将流入高度为 1 的长方体。但从那里有多少水将流入高度为 1 的相邻长方体?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2021-12-05
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多