P12901 [NERC 2020] Button Lock

题目描述

你站在一个藏有巨大宝藏的房间门前。唯一的阻碍是一个带有按钮组合锁的门。这把锁有 $d$ 个按钮,分别标有数字 $0$ 到 $d - 1$。每次按下按钮时,它会保持按下状态。你不能单独弹起一个按钮,但有一个 "RESET" 按钮——按下它会弹起所有其他按钮。初始状态下,所有按钮均未按下。 当某些特定的数字组合被按下时,门会立即打开。遗憾的是,你并不知道密码。通过阅读该锁的文档,你发现这把锁有 $n$ 种可能的密码。 请找出最短的按钮操作序列,使得在执行过程中所有可能的密码至少出现一次。任何最短的正确操作序列都将被接受。

输入格式

第一行包含两个整数 $d$ 和 $n$($1 \le d \le 10$;$1 \le n \le 2^d - 1$)。 接下来的 $n$ 行描述了可能的密码。每行包含一个由 $d$ 个 0 和 1 组成的字符串 $s_i$:对于所有 $j$ 从 $1$ 到 $d$,第 $j$ 个字符为 $\tt{1}$ 当且仅当数字为 $j - 1$ 的按钮必须被按下。 所有字符串 $s_i$ 均不相同,且每个字符串至少包含一个 $\tt{1}$。

输出格式

第一行输出一个整数 $k$,表示最小的按钮操作次数。 第二行输出 $k$ 个标记,描述操作序列。按下数字按钮时,输出对应的数字;按下 "RESET" 按钮时,输出 $\tt{R}$。

说明/提示

在第二个示例中,序列 $\tt{1 2 R 2 0 1}$ 也是可行的。 翻译由 DeepSeek V3 完成