CF1421C Palindromifier
题目描述
Ringo 在他的 [yellow submarine](https://www.youtube.com/watch?v=m2uTFF_3MaA) 里发现了一个长度为 $n$ 的字符串 $s$。该字符串只包含小写英文字母。由于 Ringo 和他的朋友们非常喜欢回文串,他希望通过对字符串 $s$ 进行两种操作,将其变成回文串。
第一种操作允许他选择 $i$($2 \le i \le n-1$),然后将子串 $s_2s_3\ldots s_i$(共 $i-1$ 个字符)反转后添加到 $s$ 的前面。
第二种操作允许他选择 $i$($2 \le i \le n-1$),然后将子串 $s_is_{i+1}\ldots s_{n-1}$(共 $n-i$ 个字符)反转后添加到 $s$ 的末尾。
注意,本题中字符串下标从 $1$ 开始。
例如,假设 $s = $ abcdef。如果他对 $i=3$ 执行第一种操作,则会将 cb 添加到 $s$ 的前面,结果为 cbabcdef。接着对新字符串执行第二种操作,$i=5$,则会得到 cbabcdefedc。
你的任务是帮助 Ringo 通过最多 $30$ 次上述两种操作(总共不超过 $30$ 次),将整个字符串变为回文串。最终得到的回文串长度不得超过 $10^6$。
保证在这些限制下一定存在解。注意,你不需要最小化操作次数,也不需要最小化最终字符串长度,只需满足限制条件即可。
输入格式
输入仅一行,包含字符串 $s$($3 \le |s| \le 10^5$),只包含小写英文字母。
输出格式
第一行输出操作次数 $k$($0 \le k \le 30$)。
接下来的 $k$ 行,每行描述一次操作,格式为 L i 或 R i。L 表示第一种操作,R 表示第二种操作,$i$ 表示所选下标。
最终得到的回文串长度不得超过 $10^6$。
说明/提示
对于第一个样例,可以按如下操作:
abac $\to$ abacab $\to$ abacaba
第二个样例的操作如下:acccc $\to$ cccacccc $\to$ ccccacccc
第三个样例本身就是回文串,因此不需要任何操作。
由 ChatGPT 4.1 翻译