atcoder#AGC058E. [AGC058E] Nearer Permutation

[AGC058E] Nearer Permutation

题目描述

この問題では,順列と言った際には,(1,2,,N) (1,2,\cdots,N) の順列を指すものとします.

2 2 つの順列 p,q p,q に対し,それらの距離 d(p,q) d(p,q) を次のように定義します.

  • p p の中で隣接 2 2 項を swap することを繰り返し,p p q q に一致させることを考える.この時必要な最小の操作回数を d(p,q) d(p,q) とする.

さらに,順列 x x に対し,順列 f(x) f(x) を次のように定義します.

  • y=(1,2,,N) y=(1,2,\cdots,N) とする.ここで,順列 z z であって,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) が与えられます. f(x)=A f(x)=A を満たす順列 x x が存在するかどうか判定してください.

1 1 つの入力ファイルにつき,T T 個のテストケースを解いてください.

数列の辞書順とは? 相異なる数列 S S と数列 T T の大小を判定するアルゴリズムを以下に説明します。

以下では S S i i 番目の要素を Si S_i のように表します。また、 S S T T より辞書順で小さい場合は S < T S\ \lt\ T 、大きい場合は S > T S\ \gt\ T と表します。

  1. S S T T のうち長さが短い方の文字列の長さを L L とします。i=1,2,,L i=1,2,\dots,L に対して Si S_i Ti T_i が一致するか調べます。
  2. Si  Ti S_i\ \neq\ T_i である i i が存在する場合、そのような i i のうち最小のものを j j とします。そして、Sj S_j Tj T_j を比較して、 Sj S_j Tj T_j より(数として)小さい場合は S < T S\ \lt\ T 、大きい場合は S > T S\ \gt\ T と決定して、アルゴリズムを終了します。
  3. Si  Ti S_i\ \neq\ T_i である i i が存在しない場合、 S S T T の長さを比較して、S S T T より短い場合は S < T S\ \lt\ T 、長い場合は S > T S\ \gt\ T と決定して、アルゴリズムを終了します。

输入格式

入力は以下の形式で標準入力から与えられる.

T T case1 case_1 case2 case_2 \vdots caseT case_T

各ケースは以下の形式で与えられる.

N N A1 A_1 A2 A_2 \cdots AN A_N

输出格式

各ケースに対し,f(x)=A f(x)=A を満たす順列 x x が存在するならば Yes を,存在しないならば No を出力せよ.

2
2
1 2
2
2 1
Yes
Yes
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
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

提示

制約

  • 1  T  150000 1\ \leq\ T\ \leq\ 150000
  • 2  N  300000 2\ \leq\ N\ \leq\ 300000
  • (A1,A2,,AN) (A_1,A_2,\cdots,A_N) (1,2,,N) (1,2,\cdots,N) の順列
  • 1 1 つの入力ファイルにつき,N N の総和は 300000 300000 を超えない
  • 入力される値はすべて整数である

Sample Explanation 1

例えば A=(2,1) A=(2,1) の場合は,x=(2,1) x=(2,1) とすると f(x)=A f(x)=A となります.

Sample Explanation 2

例えば A=(2,3,1) A=(2,3,1) の場合は,x=(3,2,1) x=(3,2,1) とすると,f(x)=A f(x)=A となります.