CF1361C Johnny and Megan's Necklace
题目描述
Johnny 的妹妹 Megan 最近过生日了。她的哥哥送给她一个盒子,上面写着“你的美丽项链——自己动手做!”。盒子里有许多项链配件和一些魔法胶水。
每个项链配件是一段连接两颗珍珠的链子。每颗珍珠的颜色可以用一个非负整数表示。魔法胶水可以让 Megan 把两颗珍珠(可能来自同一个项链配件)合并成一颗。两颗颜色分别为 $u$ 和 $v$ 的珍珠连接的美丽值定义如下:设 $2^k$ 是能整除 $u \oplus v$($u$ 和 $v$ 的异或)的最大二的幂,则美丽值等于 $k$。如果 $u = v$,则美丽值视为 $20$。
每颗珍珠最多只能与另一颗珍珠合并一次。合并两个项链配件会把它们连接起来。多次使用胶水后,Megan 最终可以做成一个项链,这个项链是由所有项链配件首尾相连形成的一个环(因此项链中的每颗珍珠都恰好与另一颗珍珠合并)。这样的项链的美丽值是其中任意一对连接的美丽值的最小值。Megan 想用所有的项链配件,做出恰好一个包含所有配件的项链,并且使美丽值最大。请你帮帮她!
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 5 \cdot 10^5$),表示盒子里的项链配件数。接下来的 $n$ 行,每行包含两个整数 $a$ 和 $b$($0 \leq a, b < 2^{20}$),表示该项链配件两端珍珠的颜色。第 $i$ 行的两颗珍珠编号分别为 $2i-1$ 和 $2i$。
输出格式
第一行输出一个整数 $b$,表示用所有配件做成的项链能达到的最大美丽值。
第二行输出 $2n$ 个两两不同的整数 $p_i$($1 \leq p_i \leq 2n$),表示初始珍珠的编号,按照它们在项链环上的顺序排列。属于同一个项链配件的两颗珍珠在排列中必须相邻(例如 $1\,4\,3\,2$ 不是合法输出,而 $2\,1\,4\,3$ 和 $4\,3\,1\,2$ 是合法的)。如果有多种方案,可以输出任意一种。
说明/提示
在第一个样例中,合并的珍珠对为:$(7, 9)$、$(10, 5)$、$(6, 1)$、$(2, 3)$ 和 $(4, 8)$。这些连接的美丽值分别为:$3$、$3$、$3$、$20$、$20$。
下图展示了这种构造方式。

由 ChatGPT 4.1 翻译