P7093 [CERC2014] Can't stop playing
题目描述
有些计算机游戏非常有趣,这个问题可能就是关于其中之一。你得到了一系列一维的方块,每个方块的长度都是 2 的幂。游戏的目标是将所有方块合并成一个大方块。方块一个接一个地呈现,对于每一个方块,你必须决定是立即粘在前一个方块的左边还是右边。
每当两个相同大小的方块相邻时,它们会合并成一个长度是它们各自两倍的方块。注意,只要可能,生成的方块会立即与相邻的方块合并。例如,如果当前的方块序列是 $2, 4, 16$,那么将 $2$ 粘在左边会导致 $8, 16$,而粘在右边则会得到 $2, 4, 16, 2$。注意,在任何时刻最多只有一对可合并的方块。
你又一次输了游戏,并且想知道是否有任何方法可以赢。分析序列以找出答案。
输入格式
输入的第一行包含测试用例的数量 $T$。接下来的描述是测试用例的内容:
每个测试用例由两行组成。第一行包含一个正整数 $n \leq 1 000$ —— 序列的长度。下一行包含 $n$ 个方块长度的序列,每个长度都是 2 的幂。所有长度的总和不超过 $2^{13}$。
输出格式
对于每个测试用例,输出一行,包含单词 $\texttt{no}$,如果赢得游戏是不可能的。否则,输出一个由 $n$ 个字母 $\texttt{l}$ 和 $\texttt{r}$ 组成的单词,表示相应的方块应该粘在左边还是右边。注意,对于第一个方块,这无关紧要。
说明/提示
题面翻译由 ChatGPT-4o 提供。