Logo Universal Online Judge

UOJ

时间限制:2 s 空间限制:512 MB
Statistics

题意简述

给定长度为 $2^n$ 的排列,下标和数值从 $0$ 开始,你可以进行两种操作:

  • 对于 $i\in[0,2^{n-1}-1]$,执行 $\text{swap}(p_i,p_{i+2^{n-1}})$。
  • 建立排列 $q$,使得对于 $i\in[0,2^{n-1}-1]$,$q_i=p_{2i},q_{i+2^{n-1}}=p_{2i+1}$。随后,令 $p\gets q$。

举例来说,对于排列 $\{0,1,2,3,4,5,6,7\}$,若执行第一种操作,排列变为 $\{4,5,6,7,0,1,2,3\}$;若执行第二种操作,排列变为 $\{0,2,4,6,1,3,5,7\}$。

你可以任意执行操作一和操作二,执行完操作之后,你需要最小化排列的逆序对数。

输入格式

本题有多组测试数据。

第一行输入两个整数 $sid,T$,表示测试点编号和数据组数。样例中 $sid = 0$。

对于每组测试数据:

第一行输入一个整数 $n$,表示排列的长度为 $2^n$。

第二行输入 $2^n$ 个整数,第 $i$ 个整数为 $p_{i-1}$。

输出格式

对于每组测试数据,输出一个整数,表示操作之后的最小逆序对数。

样例输入 1

0 2
2
0 3 1 2
3
2 3 7 6 1 4 5 0

样例输出 1

1
8

对于第一组数据,最优的方案为执行一次操作二,此时排列变为 $\{0,1,3,2\}$,逆序对数为 $1$。

对于第二组数据,最优的方案为执行一次操作一,此时排列变为 $\{1,4,5,0,2,3,7,6\}$,逆序对数为 $8$。

样例输入 / 输出 2

见选手目录下的 ex_perm2.in / ex_perm2.ans。

该样例满足测试点 $1$ 的限制。

样例输入 / 输出 3

见选手目录下的 ex_perm3.in / ex_perm3.ans。

该样例满足测试点 $2\sim 3$ 的限制。

样例输入 / 输出 4

见选手目录下的 ex_perm4.in / ex_perm4.ans。

该样例满足测试点 $4\sim 6$ 的限制。

样例输入 / 输出 5

见选手目录下的 ex_perm5.in / ex_perm5.ans。

该样例满足测试点 $7\sim 10$ 的限制。

数据范围与约定

测试点编号 $n=$
$1$ $3$
$2 \sim 3$ $7$
$4\sim 6$ $11$
$7\sim 10$ $17$

对于所有数据,保证 $1 \le n \le 17,1 \le T \le 5$,$p$ 为 $0\sim 2^n-1$ 的排列。

sample