AT_abc413_e [ABC413E] Reverse 2^i

题目描述

给定一个 $ (1,2,3,\ldots,2^{N}) $ 的排列 $ P=(P_0,P_1,\ldots,P_{2^{N}-1}) $。 你可以进行如下操作任意次(也可以一次都不做): - 选择满足 $ 0\leq a\times 2^{b} < (a+1)\times 2^{b} \leq 2^{N} $ 的非负整数 $ a,b $,将 $ P_{a\times 2^{b}}, P_{a\times 2^{b}+1},\ldots,P_{(a+1)\times 2^{b}-1} $ 反转。这里,反转指的是将 $ P_{a\times 2^{b}}, P_{a\times 2^{b}+1},\ldots,P_{(a+1)\times 2^{b}-1} $ 同时替换为 $ P_{(a+1)\times 2^{b}-1}, P_{(a+1)\times 2^{b}-2},\ldots,P_{a\times 2^{b}} $。 请你求出通过若干次操作后,能得到的 $ P $ 的字典序最小的排列。 有 $ T $ 组测试数据,请分别输出每组的答案。

输入格式

输入通过标准输入给出,格式如下: > $ T $ $ \textrm{case}_1 $ $ \textrm{case}_2 $ $ \vdots $ $ \textrm{case}_T $ 其中 $ \textrm{case}_i $ 表示第 $ i $ 个测试用例,格式如下: > $ N $ $ P_0 $ $ P_1 $ $ \ldots $ $ P_{2^N-1} $

输出格式

输出 $ T $ 行。第 $ i $ 行输出第 $ i $ 个测试用例的答案。

说明/提示

### 数据范围 - $ 1\leq T\leq 10^{5} $ - $ 1\leq N\leq 18 $ - $ P $ 是 $ (1,2,3,\ldots,2^{N}) $ 的一个排列 - 对于每个输入文件,所有测试用例的 $ 2^N $ 之和不超过 $ 3\times 10^{5} $ - 输入均为整数 ### 样例解释 1 对于第 $ 1 $ 个测试用例,如果对 $ P $ 不进行任何操作,则 $ P=(1,2) $,这是字典序最小的排列。因此答案为 $ (1,2) $。 对于第 $ 2 $ 个测试用例,选择 $ a=1,b=1 $ 进行操作后,$ P=(1,3,2,4) $。无论对 $ P $ 进行多少次操作,都无法得到比 $ (1,3,2,4) $ 更小的排列。因此答案为 $ (1,3,2,4) $。 对于第 $ 3 $ 个测试用例,按如下顺序操作可以得到 $ P=(1,4,2,3) $: - 选择 $ a=0,b=1 $ 进行操作,$ P=(3,2,4,1) $。 - 选择 $ a=0,b=2 $ 进行操作,$ P=(1,4,2,3) $。 无论对 $ P $ 进行多少次操作,都无法得到比 $ (1,4,2,3) $ 更小的排列。因此答案为 $ (1,4,2,3) $。 由 ChatGPT 4.1 翻译