QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 256 MB 満点: 100

#4520. 栅栏 / 狐狸与鹅

統計

Joe 和 Marty 发明了一个新游戏。这个游戏叫做“拯救绵羊”,它是在一个矩形网格上进行的。首先,Joe 沿着网格线画了一个矩形,然后在矩形内填充了一些方格(并非全部),这些方格代表绵羊。接着,Marty 在矩形内剩余的方格中选择一个填充为黑色,该方格代表狼。随后,他们两人分别努力实现游戏目标,即在绵羊周围画出尽可能短的围栏,使得狼无法接触到它们。

具体来说,围栏必须沿着网格线绘制,并且必须将网格划分为两个区域。所有的绵羊都应位于围栏所包围的区域内,而狼则应留在围栏外的区域。围栏必须位于所选的矩形内,它可以部分沿着矩形的边界延伸。

赢得游戏的人是画出最短围栏的那个人。有时,无法画出所需的围栏,在这种情况下,双方都输掉游戏。你的任务是编写一个程序,在可能的情况下赢得游戏。

输入格式

输入包含多组测试数据。每组数据的第一行包含两个由空格分隔的整数 $M, N$ ($1 \le M, N \le 1000$),分别代表矩形的高度和宽度。

接下来有 $M$ 行,代表矩形的内容。每一行指定矩形的一行,包含一个长度为 $N$ 的字符串。字符串中的每个字符代表一个网格方格,它可以是大写字母“X”、大写字母“O”或符号“.”(点)。字母“X”代表狼,字母“O”代表绵羊,点“.”代表网格中未被占用的方格。每种动物在网格中恰好占据一个方格,且矩形中恰好有一只狼和至少一只绵羊。

输出格式

对于每组测试数据,输出一行,包含一个整数,表示根据游戏规则将绵羊与狼隔开的最短围栏长度。假设网格中每个方格的边长为单位长度。如果无法画出围栏,则输出“-1”。

样例

样例输入 1

5 5
.....
..OOO
..OXO
O...O
..OOO
3 5
..O..
.OXO.
..O..
2 3
.O.
OXO
1 3
OXO

样例输出 1

26
-1
12
-1

说明

由于一个错误的假设,原始题目描述(2016年 CTU Open Contest 中使用的版本)要求围栏必须形成一个简单多边形。由于这一要求,该问题变得比预期困难得多。测试数据和作者的解法均对应于该问题的以下变体:

  • 围栏可以多次经过同一个点,因此不必是简单多边形。
  • 仍然禁止多次使用同一条网格线。
  • 狼不能被围栏困住。换句话说,矩形外部的网格方格必须在不穿过围栏的情况下对狼是可达的。

作者对这一错误表示歉意,并向所有参加 2016 年 CTU Open Contest 的队伍表示感谢,感谢他们的聪明才智,使得没有队伍尝试提交那个(会被判为正确的)错误解法。这在很大程度上帮助保持了比赛结果的有效性和公平性。

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.