#ATagc058e. [AGC058E] Nearer Permutation

[AGC058E] Nearer Permutation

题目描述

在本题中,提到“顺序排列”时,指的是 (1,2,,N)(1,2,\cdots,N) 的一个排列。

对于两个排列 p,qp,q,定义它们的距离 d(p,q)d(p,q) 如下:

  • 通过不断交换 pp 中相邻的两个元素,将 pp 变为 qq。所需的最小操作次数即为 d(p,q)d(p,q)

进一步地,对于排列 xx,定义排列 f(x)f(x) 如下:

  • y=(1,2,,N)y=(1,2,\cdots,N)。考虑所有排列 zz,满足 d(x,z)d(y,z)d(x,z)\leq d(y,z)。在这些排列中,字典序最小的排列即为 f(x)f(x)

例如,当 x=(2,3,1)x=(2,3,1) 时,满足 d(x,z)d(y,z)d(x,z)\leq d(y,z) 的排列有 z=(2,1,3),(2,3,1),(3,1,2),(3,2,1)z=(2,1,3),(2,3,1),(3,1,2),(3,2,1)。其中字典序最小的是 (2,1,3)(2,1,3),因此 f(x)=(2,1,3)f(x)=(2,1,3)

给定排列 A=(A1,A2,,AN)A=(A_1,A_2,\cdots,A_N),请判断是否存在排列 xx,使得 f(x)=Af(x)=A

每个输入文件包含 TT 个测试用例。

什么是数列的字典序?判断两个不同数列 SSTT 的大小的算法如下:

SS 的第 ii 个元素为 SiS_i。若 SS 的字典序小于 TT,记为 S<TS<T,大于则记为 S>TS>T

  1. SSTT 中较短的长度为 LL。依次比较 i=1,2,,Li=1,2,\dots,LSiS_iTiT_i 是否相等。
  2. 若存在 SiTiS_i\neq T_iii,取最小的此类 iijj。若 SjS_j 小于 TjT_j,则 S<TS<T,否则 S>TS>T,算法结束。
  3. 若所有 Si=TiS_i=T_i,则比较 SSTT 的长度,短者字典序小。若 SSTT 短,则 S<TS<T,否则 S>TS>T,算法结束。

输入格式

输入以如下格式从标准输入读入。

TT case1case_1 case2case_2 \vdots caseTcase_T

每个测试用例如下格式:

NN A1A_1 A2A_2 \cdots ANA_N

输出格式

对于每个测试用例,若存在排列 xx 使得 f(x)=Af(x)=A,输出 Yes,否则输出 No

样例 1

输入

2
2
1 2
2
2 1

输出

Yes
Yes

样例 2

输入

6
3
1 2 3
3
1 3 2
3
2 1 3
3
2 3 1
3
3 1 2
3
3 2 1

输出

Yes
Yes
Yes
Yes
No
No

样例 3

输入

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

输出

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
No
No
No
No
No
No
No
No

说明/提示

限制条件

  • 1T1500001\leq T\leq 150000
  • 2N3000002\leq N\leq 300000
  • (A1,A2,,AN)(A_1,A_2,\cdots,A_N)(1,2,,N)(1,2,\cdots,N) 的一个排列
  • 每个输入文件中 NN 的总和不超过 300000300000
  • 所有输入值均为整数

样例解释 1

例如 A=(2,1)A=(2,1) 时,取 x=(2,1)x=(2,1),则 f(x)=Af(x)=A

样例解释 2

例如 A=(2,3,1)A=(2,3,1) 时,取 x=(3,2,1)x=(3,2,1),则 f(x)=Af(x)=A

由 ChatGPT 4.1 翻译