好久不做构造题脑子都僵化了qwq
无解的条件是(s)包含的字符可重集和(t)包含的字符可重集不相等,相等的时候下文会给出一种一定可行的构造方案。
考虑增量构造。定义某个字符串(x)的反串为(x'),设已经构造完成的串为(S),(x)和(y)是即将拼合在(S)上的两个字符,(.)是其他的无用字符
那么我们通过以下步骤将(x)和(y)拼合:
(.....x.....S ightarrow S'..........x ightarrow xS'..........)
(xS'.....y.... ightarrow ....yxS'..... ightarrow .........yxS')
这样我们通过(4)步把(y)和(x)拼在(S)之前并将(S)翻转。我们可以通过这样的步骤不断地增量构造直到构造出(t),需要的步数是(2n+O(1))的。