SP1797 CARD - Cardsharper
题目描述
Zenek 擅长洗牌。一个洗牌是对排列 $1,...,n$ 的一个置换。现在 Zenek 有一个洗牌 $a$,还有 $k$ 个洗牌 $c_1,...,c_k$ ,求一个洗牌 $b$,使得通过 $a,b$ 的复合可以得到的 $c_i$ 尽可能多。
$2\leq n\leq 52,2\leq k\leq 6$。
输入格式
第一行一个数 $n$。接下来一行描述 $a$。接下来一行一个数 $k$。接下来 $k$ 行,其中第 $i$ 行描述 $c_i$。
输出格式
第一行描述 $b$。接下来 $k$ 行,其中第 $i$ 行
- 如果 $a,b$ 不能通过复合得到 $c_i$,输出 `-1`。
- 否则,输出一个数 $m$,然后 $m$ 个数 $r_1,...,r_m$,表示使用 $r_1$ 次洗牌 $a$,然后 $r_2$ 次 $b$,然后 $r_3$ 次 $a$,...效果与使用洗牌 $c_i$ 一样。你的输出应该满足 $0\leq m\leq 5\times 10^5,0\leq r_i\leq 10^6$。