#HK4333. 「CEOI2013」灌溉
「CEOI2013」灌溉
题目描述
题目译自 CEOI2013 Day2 T3「Watering」
Sara 是一位勤奋的农民,拥有一大片矩形土地。她的土地被整齐地划分成一个由 行和 列组成的网格。此外,每五行后面有一条横向围栏,每五列后面有一条纵向围栏。这些围栏将土地划分为 个 的区域,称为田块。
Sara 面临的两个最常见的问题是鸟害和干旱。为了防止烦人的啄食庄稼的鸟类,一些田块配备了稻草人。每个稻草人(如果存在)占据一个单元格,每个 的田块中最多只能有一个稻草人。

在可能持续数月的干旱期间,Sara 使用喷灌器来保持农作物的水分。她的每个喷灌器有三个喷嘴:一个主喷嘴和两个侧喷嘴。每个喷灌器恰好占据三个单元格,并为这三个单元格提供水源。侧喷嘴总是占据与主喷嘴相邻的两个单元格(上下左右)。因此,一个喷灌器总是处于以下配置之一:

Sara 希望在她的土地上布置喷灌器,使得每个未被稻草人占据的单元格上恰好有一个喷灌器。包含稻草人的单元格不得放置喷灌器喷嘴。此外,喷嘴不得放置在 Sara 的土地之外。
单个喷灌器浇灌的三个单元格不必属于同一个 田块:它们也可以属于相邻的田块。在这种情况下,Sara 必须在由同一个喷灌器浇灌的相邻田块之间的围栏上钻一个孔。钻孔对 Sara 来说很困难:她不希望钻太多孔。
根据 Sara 土地的描述,你需要生成一个有效的喷灌器配置来为其浇水。如果成功,你的得分将取决于需要在围栏上钻的孔的总数。
这是一个提交答案题。你将获得 个输入文件,并且只需生成相应的输出文件。
测试数据保证总存在一个解决方案。如果存在多个解决方案,你可以提交任意一个。
输入格式
输入的第一行包含一对整数 和 ,如上所述,表示 Sara 土地的大小。
接下来有 行,每行包含 个字符。这些字符表示 Sara 的田块及其间的围栏。尽管围栏实际上是无限细的,但它们也用字符表示。
一个单元格由一个字符表示。字符 . 表示空单元格,字符 # 表示稻草人。纵向围栏用字符 | 表示,横向围栏用字符 - 表示。字符 + 表示围栏的交叉点。
输出格式
输出文件应包含田块的文本表示及其有效的喷灌器安排,格式与输入文件相同。每个围栏孔应用下划线字符 _ 表示。所有输入文件中的空单元格(字符 .)应替换为小写字母,并满足以下规则:
- 由同一个喷灌器浇灌的任意三个单元格用相同的字母表示,即使它们不全部位于同一个 田块中。
- 如果同一田块中相邻的两个单元格由不同的喷灌器浇灌,它们必须用不同的字母表示。
- 如果不同田块中相邻的两个单元格由不同的喷灌器浇灌,并且它们之间的围栏有孔,它们必须用不同的字母表示。
- 如果相邻的单元格属于不同的田块,但不违反上述规则,可以用相同的字母表示。
2 2
.....|.....
.....|.....
...#.|.....
.....|.....
.....|.....
-----+-----
.....|.....
.....|.....
.....|.....
.....|.....
.....|.....
aaacc|dxxxa
bbbce|dyyya
ddd#e|dzzza
ccbae|fccbb
cbbaa|ffcdb
-----+---_-
ssrrr|tttdd
saaax_xxeee
yxbbb|zdaaa
yxccc|zdbbb
yxddd|zdccc
数据范围与提示
每个测试点分值为 。如果方案不合法,该测试点得零分。否则,评分如下:
- 如果围栏上的孔数不超过 ,则得 分。
- 否则,得 分。
在 个测试点中,有 个测试点中每个田块都有稻草人。