#P14798. [Bulgarian2018组队赛]chameleon
[Bulgarian2018组队赛]chameleon
题目描述
小黄鸭正在学习一个新的图形编辑器“Chameleon(变色龙)”。这个编辑器异常简单:它只支持两种颜色——黑色与白色,以及一个光标——变色龙。
编辑器的工作区域是一个 N × N 的网格。在网格中的某个格子里放着变色龙光标。光标可以在网格内上下左右移动,每次恰好移动一个格子。
光标的颜色必须始终与它所在格子的颜色相同。为此,当它移动到一个与自身颜色不同的格子时,必须发生下面两种情况之一:
- 要么光标改变自己的颜色,使之与目标格子的颜色一致;
- 要么目标格子改变自己的颜色,使之与光标颜色一致。
例如,如果光标从黑格移动到白格,那么必须要么光标变白,要么这个白格被改成黑色。
如果光标和目标格子的颜色原本相同,则它们的颜色都不改变。
原题含一幅说明规则的示意图,展示了棋盘、光标位置以及移动/改色方式。整理为 md 时未内嵌图片,你后续可自行补入。
初始时:
- 光标颜色为黑色;
- 光标位于工作区左上角格子;
- 左上角格子也是黑色;
- 其余所有格子都是白色。
请编写程序,输出一系列操作,使得执行完这些操作后,网格的颜色分布恰好变成输入中给定的图案。
输入格式
第一行输入整数 N(5 ≤ N ≤ 100),表示棋盘大小。
接下来 N 行描述目标图案。每行是一个长度为 N 的字符串:
'W'表示白色格子;'B'表示黑色格子。
最后一行输入测试编号。
输出格式
输出一行字符串,表示所求的操作序列。
字符含义如下:
'l'、'u'、'r'、'd':分别表示向左、上、右、下移动,并改变光标颜色;'L'、'U'、'R'、'D':分别表示向左、上、右、下移动,并改变格子颜色。
如果移动到的格子颜色与光标原本相同,则既可以用小写,也可以用大写。
输出串中不应包含空格。
测试与评分
本题测试数据对选手开放,可以从系统中下载。测试编号与文件名一致,编号从 1 到 20。
每个测试最多 5 分,且彼此独立计分。
若输出的操作序列长度不超过 5000000,并且最终得到正确图案,则该测试视为通过。
其中:
- 前
10个测试:只要通过,就得5分; - 后
10个测试:若通过,则按以下规则给分:5分:操作数不超过3N^24分:操作数不超过5N^23分:操作数不超过10N^22分:操作数不超过2.5N^31分:操作数不超过5000000
样例输入
5
BWWWW
BWWWW
BWBWW
WWWWW
WWWWW
1
样例输出
DDRRdlU
说明
原题还提供了一个 Visualizer.jar 可视化程序,用于观察目标图案或模拟输出序列的执行过程。若你后续需要配置完整 Hydro 包,可以把这一说明一并保留到题面附件区。