luogu#P9273. [CEOI 2013] 灌水 / Watering
[CEOI 2013] 灌水 / Watering
题目背景
upd on 2023/11/01: 本题部分分已修复。
翻译自 CEOI 2013 Day 2。
Sara 是一位专注的农民,拥有一块大的长方形土地。她的土地被分成网格状的若干个单元格,共有 行和 列。此外,每隔五行有一道横向的围栏,每隔五列有一道纵向的围栏。这些围栏将土地划分成了 个大小为 的区域,称为田地。
这块农田两个最常见的问题是鸟害和旱灾。为了对抗鸟害,有些田地安置了稻草人。稻草人(如果有的话)占据一个单元格,每个 的田地最多只能有一个稻草人。
在干旱期,可能会持续数月时间,Sara 使用洒水器来浇灌她的庄稼。每个洒水器都有三个喷嘴:一个主喷嘴和两个侧喷嘴。它正好占据三个单元格,并浇灌所有这些单元格。侧喷嘴总是占据紧邻主喷嘴(上、下、左或右)的两个单元格。因此,单个洒水器可以浇灌到的三个单元格如图所示:
Sara 要在未被稻草人占据的每个单元格上恰好放置一个洒水器。含有稻草人的单元格不能包含洒水器喷嘴。此外,喷嘴不能放置在 Sara 的土地之外。被单个洒水器浇灌的三个单元格不一定属于同一 领域:它们也可以属于相邻的领域。在这种情况下,Sara 必须在两个由同一洒水器浇灌的相邻领域之间的栅栏上钻一个洞。
题目描述
这是一个提交答案题。您将获得 个输入文件,只需提交相应的输出文件即可。您可以从附件里的 watering.in.zip
中下载输入文件。
提交一个可行的浇灌方案,使得它满足所有的要求。
如果存在多个解决方案,可以提交任何一个。
输入格式
输入的第一行包含一对整数 和 (),它们表示 Sara 的土地的大小。
接下来的 行,每行包含一个长度为 的字符序列。它们代表 Sara 的田地和它们之间的围栏。即使围栏实际上是无限薄的,它也用字符表示。
一个单元格用一个字符表示。点字符 .
表示空单元格,而 #
字符表示稻草人。垂直围栏用 |
字符表示,水平围栏用 -
字符表示。交叉点用 +
字符表示。
输出格式
输出文件应该包含采用与输入文件相同格式的文本表示具有有效喷水器排列的字段。栅栏中的每个孔应该由下划线字符 _
表示。输入文件中的所有空单元格(点)都应替换为小写字母 a
- z
,以满足以下规则:
- 由同一喷水器浇灌的任何三个单元格都由相同的字母表示,即使它们不全部在同一个 的农田中。
- 如果同一块田中相邻的两个单元格由不同的喷水器浇灌,则它们必须用不同的字母表示。
- 如果不同农田中的两个相邻单元格由不同的喷水器浇灌,并且它们之间有一个栅栏孔,则它们必须用不同的字母表示(但是这样钻孔的意义何在)。
- 允许将属于不同农田的相邻单元格表示为相同的字母,只要满足所有先前的规则。
2 2
.....|.....
.....|.....
...#.|.....
.....|.....
.....|.....
-----+-----
.....|.....
.....|.....
.....|.....
.....|.....
.....|.....
aaacc|dxxxa
bbbce|dyyya
ddd#e|dzzza
ccbae|fccbb
cbbaa|ffcdb
-----+---_-
ssrrr|tttdd
saaax_xxeee
yxbbb|zdaaa
yxccc|zdbbb
yxddd|zdccc
提示
每个测试点的分值为 分。如果输出方案无效,该测试点将获得零分。如果方案有效,则将按以下方式进行评分:
- 如果栅栏上的孔的数量不超过 ,则得分为 分。
- 否则,得分为 分。
在 个测试输入中的 个中,每个田地都有一个稻草人。
SPJ 提供者: