AT_future_contest_2019_qual_a ばらばらロボット

题目描述

一个机器人将在一个棋盘上行走,而命令列表中包含了机器人的行动指令。在这个问题中,命令可以是三种字符:`S`、`L`、`R`,而命令列表则是由这些字符组成的字符串。 我们需要处理 $N$ 个长度为 $L$ 的命令列表。你的任务是设计一个 $M \times M$ 的棋盘($M = 29$),使得机器人在执行这 $N$ 个命令列表后,能够在尽可能多的不同位置停下。 机器人从棋盘中央的格子(从上到下第 $15$ 行,从左到右第 $15$ 列)开始,面朝上,并按照命令列表依次执行命令。每个命令的具体效果如下: - `S`:沿当前方向前进 $1$ 格。 - `L`:向左旋转 $90$ 度。 - `R`:向右旋转 $90$ 度。 在棋盘的设计中,你可以使用以下几种类型的格子来影响命令效果: - `.`:普通格子,命令会正常执行。 - `#`:墙壁格子,机器人无法进入。如果尝试进入,会停在当前格子。**棋盘的最外圈必须由墙壁格子构成。** - `D`:双倍格子,此处的命令效果翻倍(相比原来,效果应用两次,中途经过的格子效果被忽略)。 - `T`:三倍格子,命令效果三倍(效果应用三次,忽略中途经过的格子)。 - `L`:特殊`L`格子,在此处执行`R`命令,效果如同在普通格子上执行`L`命令。 - `R`:特殊`R`格子,在此处执行`L`命令,效果如同在普通格子上执行`R`命令。 可自由使用任意数量的这些格子。 目标是设计一个棋盘,使得机器人在所有命令列表下,停留的位置尽可能多。评分细则如下: 1. 初始化棋盘上每个格子的 *停止计数* 为 $0$。 2. 执行每个命令列表,机器人会在执行结束后增加其所在格子的停止计数。 3. 根据停止计数,计算每个格子的得分: - 停止计数为 $1$:格子得分 $10$ 分。 - 停止计数为 $2$:格子得分 $3$ 分。 - 停止计数为 $3$:格子得分 $1$ 分。 - 其他情况:得分 $0$ 分。 4. 总得分为所有格子的得分之和。 请构建一个得分最高的棋盘。

输入格式

输入包含以下数据: > $ N $ $ M $ $ L $ $ S_1 $ $ S_2 $ $ : $ $ S_N $

输出格式

输出一个尽可能高得分的棋盘,以以下格式: > $ T_1 $ $ T_2 $ $ : $ $ T_M $ 在这里,$ T_i $ 是一个长度为 $ M $ 的字符串,只能包含以下字符:`.`, `#`, `D`, `T`, `L`, `R`。 进一步要求是,棋盘最外圈的所有字符(即 $ T_1, T_M $ 的字符和每个 $ T_i $ 的第一个与最后一个字符)必须为 `#`,且 $ T_{15} $ 的第 $ 15 $ 个字符不能为 `#`。

说明/提示

### 约束 - $ N = 500 $ - $ M = 29 $ - $ L = 300 $ - 各 $ S_i $ 是一个长度 $ L $ 的字符串。 - 在每个 $ S_i $ 中,`S` 出现概率 $ 50\% $,而 `L` 和 `R` 各出现概率 $ 25\% $。 ### 评分 单个测试用例的得分按照描述中方法计算。 共有 $ 30 $ 个测试用例,所有测试用例得分之和为提交的总得分。 如果 example_01 以外的测试用例中存在任何不合法输出,则除了 example_01 以外的所有测试用例得分为 $ 0 $。 ### 示例解释 **以下输入是个小规模示例,不满足整个约束条件。** 对于每个命令列表,机器人停止的位置如下,可以得到 $ 60 $ 分: ``` ####### #.5.1## #.3642# #.....# #.....# #.....# ####### ``` \[输入文���和输出示例请从此处下载(zip)\](https://img.atcoder.jp/future-contest-2019-qual/4c6cbaf25f6cba6dab44a006e3dc7c37.zip) 评分结果中的「example_01」即来自此数据。该数据也是评分对象之一。 **本翻译由 AI 自动生成**