#P14798. [Bulgarian2018组队赛]chameleon

[Bulgarian2018组队赛]chameleon

题目描述

小黄鸭正在学习一个新的图形编辑器“Chameleon(变色龙)”。这个编辑器异常简单:它只支持两种颜色——黑色与白色,以及一个光标——变色龙。

编辑器的工作区域是一个 N × N 的网格。在网格中的某个格子里放着变色龙光标。光标可以在网格内上下左右移动,每次恰好移动一个格子。

光标的颜色必须始终与它所在格子的颜色相同。为此,当它移动到一个与自身颜色不同的格子时,必须发生下面两种情况之一:

  • 要么光标改变自己的颜色,使之与目标格子的颜色一致;
  • 要么目标格子改变自己的颜色,使之与光标颜色一致。

例如,如果光标从黑格移动到白格,那么必须要么光标变白,要么这个白格被改成黑色。

如果光标和目标格子的颜色原本相同,则它们的颜色都不改变。

原题含一幅说明规则的示意图,展示了棋盘、光标位置以及移动/改色方式。整理为 md 时未内嵌图片,你后续可自行补入。

初始时:

  • 光标颜色为黑色;
  • 光标位于工作区左上角格子;
  • 左上角格子也是黑色;
  • 其余所有格子都是白色。

请编写程序,输出一系列操作,使得执行完这些操作后,网格的颜色分布恰好变成输入中给定的图案。

输入格式

第一行输入整数 N5 ≤ N ≤ 100),表示棋盘大小。

接下来 N 行描述目标图案。每行是一个长度为 N 的字符串:

  • 'W' 表示白色格子;
  • 'B' 表示黑色格子。

最后一行输入测试编号。

输出格式

输出一行字符串,表示所求的操作序列。

字符含义如下:

  • 'l''u''r''d':分别表示向左、上、右、下移动,并改变光标颜色
  • 'L''U''R''D':分别表示向左、上、右、下移动,并改变格子颜色

如果移动到的格子颜色与光标原本相同,则既可以用小写,也可以用大写。

输出串中不应包含空格。

测试与评分

本题测试数据对选手开放,可以从系统中下载。测试编号与文件名一致,编号从 120

每个测试最多 5 分,且彼此独立计分。

若输出的操作序列长度不超过 5000000,并且最终得到正确图案,则该测试视为通过。

其中:

  • 10 个测试:只要通过,就得 5 分;
  • 10 个测试:若通过,则按以下规则给分:
    • 5 分:操作数不超过 3N^2
    • 4 分:操作数不超过 5N^2
    • 3 分:操作数不超过 10N^2
    • 2 分:操作数不超过 2.5N^3
    • 1 分:操作数不超过 5000000

样例输入

5
BWWWW
BWWWW
BWBWW
WWWWW
WWWWW
1

样例输出

DDRRdlU

说明

原题还提供了一个 Visualizer.jar 可视化程序,用于观察目标图案或模拟输出序列的执行过程。若你后续需要配置完整 Hydro 包,可以把这一说明一并保留到题面附件区。