QOJ.ac

QOJ

时间限制: 2 s 内存限制: 2048 MB 总分: 100

#5112. 我在哪里?

统计

我是谁?我是什么?我为什么存在?这些都是困扰哲学家数千年的难题。但当问题变成“我在哪里?”时,现代智能手机和 GPS 卫星已经让这个问题失去了悬念。

为了给那些失业的空间哲学家们“雪上加霜”,即时地图定位公司(ICPC)决定进行一场演示,展示 GPS 相比传统地图的强大之处。他们的论点是:地图只有在你已经知道自己位置时才有用,如果你从一个未知位置出发,地图的作用就大打折扣了。

为了这次演示,ICPC 创建了一个测试区域,它被布置成一个无限大的笛卡尔网格。大多数网格单元是空的,但有有限数量的单元格中心带有标记(参见图 L.1(a),其中展示了一个有五个标记单元格的示例)。所有空网格单元看起来都一样,所有带有标记的单元格看起来也一样。假设你得到了一张测试区域的地图(即所有标记的位置),并且你被放置在一个(你不知道的)网格单元中。你需要多久才能找出你实际所在的位置?ICPC 的答案很明确:可能需要非常非常长的时间,而 GPS 可以瞬间给出答案。但具体需要多久呢?

图 L.1:示例网格以及测试对象探索网格的顺序。

在试验中,测试对象将通过遵循一个向外扩展的顺时针螺旋来探索环境,其前几步如图 L.1(b) 所示。起始单元格标记为“0”,数字表示访问其他单元格的顺序。测试对象只有在位于某个网格单元时才能看到该单元格是否有标记,并且一旦他们根据目前为止所看到的网格单元确定了自己的位置,他们就会立即停止探索。这意味着观察到的空单元格和标记单元格的序列只能对应于唯一的起始位置。网格是无限的,但探索过程是有限的,因为一旦测试对象看到了网格上的所有标记,他们就一定能知道自己所在的位置。

让数百名测试对象真的在圆圈里跑可能很昂贵,所以 ICPC 认为编写一个模拟程序会更便宜、更快捷。也许你能帮帮忙?

输入格式

输入描述了一个网格。第一行包含两个整数 $d_x, d_y$ ($1 \le d_x, d_y \le 100$)。 接下来的 $d_y$ 行,每行包含 $d_x$ 个字符,描述了测试网格的一部分。网格描述中第 $j$ 行的第 $i$ 个字符指定了坐标为 $(i, d_y - j + 1)$ 的网格单元的内容。字符为 ‘.’ 或 ‘X’,分别表示该单元格为空或包含一个标记。

网格中的标记总数在 1 到 100 之间(含 1 和 100)。输入范围之外的所有网格单元均为空。

输出格式

在 ICPC 的实验中,测试对象知道他们将从某个位置 $(x, y)$ 出发,其中 $1 \le x \le d_x, 1 \le y \le d_y$。

输出三行。第一行应为识别起始位置所需的预期步数,假设起始位置是均匀随机选择的。该数字的绝对误差需在 $10^{-3}$ 以内。

第二行应为识别起始位置所需的最大步数。

第三行应列出所有需要该最大步数的起始坐标 $(x, y)$。坐标应按 $y$ 坐标递增排序,若 $y$ 坐标相同,则按 $x$ 坐标递增排序。

样例

样例输入 1

5 5
....X
.X...
.....
X..X.
..X..

样例输出 1

9.960
18
(1,4) (4,5)

样例输入 2

5 1
..XX.

样例输出 2

4.600
7
(1,1) (5,1)

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.