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

    ID: 19238 远端评测题 1500ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>数学吉林O2优化枚举前缀和2026省赛/邀请赛

[JLCPC 2026] 翻转逆序对

题目描述

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

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

逆序对定义为满足 1i<jn1 \le i < j \le npi>pjp_i > p_j 的下标对 (i,j)(i, j)

输入格式

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

  • 第一行一个整数 nn1n80001 \le n \le 8000)表示排列长度。
  • 第二行 nn 个整数 p1,p2,,pnp_1, p_2, \ldots, p_n1pin1 \le p_i \le n)表示给出的排列。

数据保证 n8000\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)