#P7714. 「EZEC-10」排列排序

    ID: 6742 Type: RemoteJudge 1000ms 128MiB Tried: 0 Accepted: 0 Difficulty: 2 Uploaded By: Tags>模拟基础算法构造差分双指针,two-pointer

「EZEC-10」排列排序

题目描述

给你一个长度为 nn 的排列 p1,p2,,pnp_1,p_2, \cdots ,p_n。你需要把它排序。

每次可以花区间长度,即 rl+1r-l+1 的代价,选择排列中的任意一段区间 [l,r][l,r],并将 [l,r][l,r] 从小到大排序。

现在你可以让他进行若干次这个操作,直到 pp 中元素的值从 11nn 按升序排序,即对于 11nn 的每一个 ii,都有 pi=ip_i=i

求问花的代价最少为多少?

输入格式

本题有多组询问,第一行有一个数 TT 表示询问组数。

对于每组询问:

第一行给出一个整数 nn

第二行 nn 个整数,由空格隔开,代表排列 pp 中元素的值。

输出格式

TT 行,每行一个整数表示一组询问的答案。

2
3
1 3 2
4
3 2 1 4
2
3

提示

【样例 11 说明】

对于第一组数据,可选择区间 [2,3][2,3] 进行排序。

对于第二组数据,可选择区间 [1,3][1,3] 进行排序。

【数据规模与约定】

对于 20%20\% 的数据,n4n\leq 4

对于另 30%30\% 的数据,n5000\sum n\leq5000

对于另 10%10\% 的数据,p1=np_1=n

对于 100%100\% 的数据,1T,n1061\le T,\sum n\le 10^6