#P16920. [JLCPC 2026] 翻转逆序对

    ID: 17156 Type: RemoteJudge 1500ms 1024MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>数学吉林O2优化枚举前缀和2026省赛/邀请赛

[JLCPC 2026] 翻转逆序对

题目描述

tarjen\mathit{tarjen} 有一个长度为 nn 的排列 pp。你可以执行至多一次操作:选择两个整数 ll 和 rr(1≤l≤r≤n1 \le l \le r \le n),将子数组 pl,pl+1,…,prp_l, p_{l+1}, \ldots, p_r 翻转。

聪明的 tarjen\mathit{tarjen} 想考考你,操作后排列的最大逆序对数是多少?

逆序对定义为满足 1≤i<j≤n1 \le i < j \le n 且 pi>pjp_i > p_j 的下标对 (i,j)(i, j)。

输入格式

第一行有一个整数 TT(1≤T≤1051 \le T \le 10^5),表示数据组数。接下来 TT 段,每段描述一组数据。对于每组数据:

  • 第一行一个整数 nn(1≤n≤80001 \le n \le 8000)表示排列长度。
  • 第二行 nn 个整数 p1,p2,…,pnp_1, p_2, \ldots, p_n(1≤pi≤n1 \le p_i \le n)表示给出的排列。

数据保证 ∑n≤8000\sum n \le 8000。

输出格式

对于每组数据,输出一行一个整数,表示最大逆序对数。

3
3
2 1 3
5
5 4 3 2 1
6
3 5 1 4 2 6
2
10
10

提示

第一组数据中,翻转区间 [1,3][1, 3] 得到 [3,1,2][3, 1, 2],有 22 个逆序对:(1,2)(1,2) 和 (1,3)(1,3)。

第二组数据中,可以不进行操作,原排列为 [5,4,3,2,1][5,4,3,2,1],有 1010 个逆序对,这是长度为 55 的排列能达到的最大逆序对数量。

第三组数据中,翻转区间 [3,6][3, 6] 得到 [3,5,6,2,4,1][3, 5, 6, 2, 4, 1],有 1010 个逆序对:(1,4)(1,4)、(1,6)(1,6)、(2,4)(2,4)、(2,5)(2,5)、(2,6)(2,6)、(3,4)(3,4)、(3,5)(3,5)、(3,6)(3,6)、(4,6)(4,6) 和 (5,6)(5,6)。