AT_arc103_b [ABC111D] Robot Arms

题目描述

在すぬけ君的工厂里,计划引进一种具有以下特性的**机器人手臂**: - 机器人手臂由 $m$ 个**手臂**和 $m+1$ 个**关节**组成。手臂编号为 $1, 2, ..., m$,关节编号为 $0, 1, ..., m$。手臂 $i$ 连接关节 $i-1$ 和关节 $i$。手臂 $i$ 的长度为 $d_i$。 - 每个手臂都可以独立指定**模式**。模式可以是 `L`、`R`、`D`、`U` 中的任意一个,手臂的模式决定了该手臂的方向。将工厂视为坐标平面时,关节 $i$ 的坐标 $(x_i, y_i)$ 按如下方式确定: - $ (x_0, y_0) = (0, 0) $。 - 当手臂 $i$ 的模式为 `L` 时,$ (x_i, y_i) = (x_{i-1} - d_i, y_{i-1}) $。 - 当手臂 $i$ 的模式为 `R` 时,$ (x_i, y_i) = (x_{i-1} + d_i, y_{i-1}) $。 - 当手臂 $i$ 的模式为 `D` 时,$ (x_i, y_i) = (x_{i-1}, y_{i-1} - d_i) $。 - 当手臂 $i$ 的模式为 `U` 时,$ (x_i, y_i) = (x_{i-1}, y_{i-1} + d_i) $。 すぬけ君希望通过巧妙地指定手臂的模式,使得机器人手臂的关节 $m$ 能**恰好**到达 $N$ 个点 $(X_1, Y_1), (X_2, Y_2), ..., (X_N, Y_N)$ 中的任意一个。请判断是否存在这样的机器人手臂。如果存在,请给出满足条件的机器人手臂,以及对于每个点 $(X_j, Y_j)$,使机器人手臂的关节 $m$ 到达该点的模式指定方法。

输入格式

输入按以下格式从标准输入读入。 > $N$ > $X_1$ $Y_1$ > $X_2$ $Y_2$ > $\vdots$ > $X_N$ $Y_N$

输出格式

如果存在满足条件的方案,请按以下格式输出。如果不存在,输出 `-1`。 > $m$ > $d_1$ $d_2$ $\ldots$ $d_m$ > $w_1$ > $w_2$ > $\vdots$ > $w_N$ 其中,$m$ 和 $d_i$ 表示机器人手臂的信息,具体含义见题目描述。要求 $1 \leq m \leq 40$,$1 \leq d_i \leq 10^{12}$,且 $m, d_i$ 均为整数。 $w_j$ 是长度为 $m$ 的字符串,表示使机器人手臂的关节 $m$ 到达点 $(X_j, Y_j)$ 的模式指定方法。$w_j$ 的第 $i$ 个字符为 `L`、`R`、`D`、`U` 中的一个,表示手臂 $i$ 的模式。

说明/提示

### 限制条件 - 输入均为整数。 - $1 \leq N \leq 1000$ - $-10^9 \leq X_i \leq 10^9$ - $-10^9 \leq Y_i \leq 10^9$ ### 部分得分 - 对于 $300$ 分的测试点,有 $-10 \leq X_i \leq 10$ 且 $-10 \leq Y_i \leq 10$。 ### 样例解释 1 对于每个 $(X_j, Y_j)$,使机器人手臂的关节 $m$ 到达该点的方法如下: - 对于 $(X_1, Y_1) = (-1, 0)$,首先关节 $0$ 的位置为 $(x_0, y_0) = (0, 0)$。手臂 $1$ 的模式为 `R`,所以关节 $1$ 的位置为 $(x_1, y_1) = (1, 0)$。手臂 $2$ 的模式为 `L`,所以关节 $m=2$ 的位置为 $(x_2, y_2) = (-1, 0)$。 - 对于 $(X_2, Y_2) = (0, 3)$,$(x_0, y_0) = (0, 0), (x_1, y_1) = (0, 1), (x_2, y_2) = (0, 3)$。 - 对于 $(X_3, Y_3) = (2, -1)$,$(x_0, y_0) = (0, 0), (x_1, y_1) = (0, -1), (x_2, y_2) = (2, -1)$。 ### 样例解释 3 $(X_j, Y_j)$ 中可能包含相同的点。 由 ChatGPT 4.1 翻译