D. 停留或镜像
每个测试的时间限制:2 秒
内存限制:256 兆字节
你有一个长度为 n 的排列 p1,p2,…,pn。
你需要按以下方式构造一个数组 a1,a2,…,an:
- 对于每个 1≤i≤n,要么令 ai=pi,要么令 ai=2n−pi。
请你找出数组 a1,a2,…,an 中可能的最少逆序对数量。
排列 的定义:长度为 n 的排列是由 n 个从 1 到 n 的互不相同的整数构成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是(2 出现了两次),[1,3,4] 也不是(n=3 但数组中有 4)。
逆序对 的定义:在数组 a1,a2,…,an 中,逆序对是一对下标 (i,j),满足 1≤i<j≤n 且 ai>aj。
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 t(1≤t≤103)。
每个测试用例的第一行包含一个整数 n(2≤n≤5⋅103)。
第二行包含 n 个整数 p1,p2,…,pn(1≤pi≤n)。保证 p1,p2,…,pn 是一个排列。
保证所有测试用例的 n 之和不超过 5⋅103。
输出格式
对于每个测试用例,输出一个整数 —— 数组 a 中可能的最少逆序对数量。
示例输入
5
2
2 1
3
2 1 3
4
4 3 2 1
5
2 3 1 5 4
6
2 3 4 1 5 6
示例输出
0
1
0
2
2
提示
- 在第一个测试用例中,唯一的最优数组 a 是 [2,3],有 0 个逆序对。
- 在第二个测试用例中,一个最优数组 a 是 [2,5,3],有 1 个逆序对。另一个可能的最优数组 a 是 [2,1,3]。