#299. 消除逆序对

消除逆序对

题目描述

给定长为 nn 的数组 aa,每次操作选择一对元组 (ai,aj)(a_i,a_j),使得 1i<jn1\le i<j\le nai>aja_i>a_j ,将 aja_j 从数组中删除,数组长度减 11,且其余元素相对顺序不变。

请计算在最优操作下可对数组执行的最大操作次数。

输入格式

每个测试点包含多个测试用例,第一行输入一个整数 T(1T50)T(1\le T\le 50),代表测试用例组数。对于每组测试用例:

  • 第一行输入一个整数 n(1n100)n(1\le n\le 100),代表数组长度;
  • 第二行输入 nn 个正整数 a1,a2,,an(1ain)a_1,a_2,\dots,a_n(1\le a_i\le n)

输出格式

对每个测试用例,输出最优操作情况下可对数组执行的最大操作次数。

样例

5
3
3 2 1
3
1 2 3
3
3 3 3
5
3 1 4 5 2
1
1
2
0
0
2
0

说明/提示

  • 对于样例1,首先选择下标 i=2i=2j=3j=3,对应的值是 a2=2a_2=2a3=1a_3=1,把元素 a3a_3 删除。此时数组变为 a=[3,2]a=[3,2]。然后再选择下标 i=1i=1j=2j=2,删除第二个元素 22。总共执行 22 次操作。
  • 对于第二、第三和第五个样例,没有符合条件的下标对,因此无法操作。
  • 对于第四个样例,可删除第二个和第五个元素,可证没有更优方案。

题源:CodeForces 1070(Div2) A题