CF1578A Anti-Tetris
题目描述
让我们来考虑游戏“Sticky Tetris”。在这个游戏中,有一个 $n \times m$ 的方格场地。方块会出现在场地上,玩家可以移动这些方块。
每个方块是一个最多包含 $7$ 个格子的 $4$ 连通块。
每个新方块会出现在场地内的任意位置,前提是该位置完全位于场地内、不与其他方块重叠,并且该方块的最上方格子位于场地的最上面一行。玩家可以将方块向左、向右和向下移动,并且在任何时刻,方块都必须完全位于场地内且不与其他方块重叠。玩家可以在任意时刻停止方块的移动,之后该方块将无法再被移动。由于这是“Sticky Tetris”,一旦方块停止后就不会再下落。
现在给定“Sticky Tetris”游戏的最终状态。请你还原出一组操作步骤,使得能够达到该状态。如果不存在这样的方案,请输出 $-1$。
输入格式
第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 50$),表示场地的大小。
接下来的 $n$ 行,每行包含一个长度为 $m$ 的字符串。每个字符要么是 '.',要么是小写英文字母。相同字母的连通块对应一个方块。每个方块最多包含 $7$ 个格子。
输出格式
如果不存在解,输出 $-1$。
否则,输出 $k$,即场地上放置的不同方块的数量。
接下来的 $k$ 行,每行输出一个方块的操作步骤,按照方块被放置的顺序输出。
每行包括一个数字 $x$,表示该方块最上面一行最左侧格子的起始列($1 \le x \le m$),后接一个由 'L'(左移)、'R'(右移)、'D'(下移)组成的字符串,描述该方块的移动路径,最后以一个 'S'(停止)结尾。该操作字符串最多包含 $n \cdot m + 1$ 个字符。
说明/提示
由 ChatGPT 4.1 翻译