#P17196. [KOI 2026 #2] 序列运算

    ID: 19512 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>Special Judge2026KOI(韩国)

[KOI 2026 #2] 序列运算

题目描述

给定长度为 NN 的序列 A=[A1,A2,⋯ ,AN]A=[A_1,A_2,\cdots,A_N] 和长度为 MM 的序列 B=[B1,B2,⋯ ,BM]B=[B_1,B_2,\cdots,B_M]。

序列 AA 是由整数 1,2,⋯ ,N1,2,\cdots,N 各恰好出现一次构成的序列。序列 BB 的每个元素都在 11 到 NN 之间,且所有元素两两不同。

将要进行运算的序列记为 XX。初始时,序列 XX 与序列 AA 相同。你可以对序列 XX 执行以下两种运算任意多次(也可以一次都不执行)。

  • 交换运算

    设 X=[X1,X2,⋯ ,XK]X=[X_1,X_2,\cdots,X_K]。

    选择一个满足 1≤i≤K−11 \le i \le K-1 且 Xi<Xi+1X_i<X_{i+1} 的整数 ii,交换相邻两个元素 XiX_i 和 Xi+1X_{i+1} 的值。

  • 合并运算

    设 X=[X1,X2,⋯ ,XK]X=[X_1,X_2,\cdots,X_K]。

    选择一个满足 1≤i≤K−11 \le i \le K-1 的整数 ii,将相邻两个元素 XiX_i 和 Xi+1X_{i+1} 合并为一个元素 min⁡(Xi,Xi+1)\min(X_i,X_{i+1})。

    也就是说,执行该运算后,序列 XX 的长度减少 11。

请判断能否使用给定运算将序列 XX 变成序列 BB。若可以,请找出任意一个将序列 XX 变为序列 BB 的运算序列。

请注意,不需要最小化运算次数。

输入格式

第一行依次给出两个以空格分隔的整数 NN 和 MM。

第二行依次给出 NN 个以空格分隔的整数 A1,A2,⋯ ,ANA_1,A_2,\cdots,A_N。

第三行依次给出 MM 个以空格分隔的整数 B1,B2,⋯ ,BMB_1,B_2,\cdots,B_M。

输出格式

如果无法将序列 XX 变成序列 BB,则在第一行输出 NO。

如果可以将序列 XX 变成序列 BB,则按如下格式输出:

第一行输出 YES。

第二行输出要执行的运算次数 QQ。QQ 必须满足:

0≤Q≤N20 \le Q \le N^2

接下来的 QQ 行按执行顺序输出各次运算。每次运算必须采用以下两种格式之一:

  • 1 i

    对序列 XX 的第 ii 个元素和第 i+1i+1 个元素执行交换运算。

    设执行该运算前序列 XX 的长度为 KK,则必须满足 1≤i≤K−11 \le i \le K-1,且序列 XX 的第 ii 个元素的值小于第 i+1i+1 个元素的值。

  • 2 i

    对序列 XX 的第 ii 个元素和第 i+1i+1 个元素执行合并运算。

    设执行该运算前序列 XX 的长度为 KK,则必须满足 1≤i≤K−11 \le i \le K-1。

所有位置均以执行相应运算前的序列 XX 为准,序列的第一个位置编号为 11。

按照输出的全部运算依次执行后,所得序列必须与序列 BB 完全相同。

如果存在多种可行输出,输出其中任意一种均视为正确。

如果能使用给定运算将序列 XX 变成序列 BB,则可以证明,一定存在满足上述全部条件的输出。

4 2
1 4 2 3
3 1
YES
6
1 1
1 2
1 3
2 1
1 1
2 2
2 1
1 2
2
NO
4 4
3 2 1 4
3 1 2 4
NO
4 2
1 3 2 4
1 3
NO

提示

样例 1 解释

序列 XX 发生如下变化:

$[1,4,2,3]\to[4,1,2,3]\to[4,2,1,3]\to[4,2,3,1]\to[2,3,1]\to[3,2,1]\to[3,1]$

因此,可以将序列 XX 变成序列 BB。

限制条件

  • 给出的所有数均为整数。
  • 1≤M≤N≤3 0001 \le M \le N \le 3\,000
  • 序列 AA 是 1,2,⋯ ,N1,2,\cdots,N 的一个排列,即 {A1,A2,⋯ ,AN}={1,2,⋯ ,N}\{A_1,A_2,\cdots,A_N\}=\{1,2,\cdots,N\}。
  • 对于每个整数 ii(1≤i≤M1 \le i \le M),1≤Bi≤N1 \le B_i \le N。
  • B1,B2,⋯ ,BMB_1,B_2,\cdots,B_M 两两不同。

子任务

  1. (77 分)N≤8N \le 8。
  2. (88 分)M=1M=1。
  3. (1212 分)M=NM=N。
  4. (1010 分)对于每个整数 ii(1≤i≤N1 \le i \le N),Ai=iA_i=i。
  5. (1313 分)M=N−1M=N-1。
  6. (1515 分)序列 BB 是序列 AA 的子序列。也就是说,存在满足 1≤p1<p2<⋯<pM≤N1 \le p_1<p_2<\cdots<p_M \le N 的整数 p1,p2,⋯ ,pMp_1,p_2,\cdots,p_M,使得对于每个整数 ii(1≤i≤M1 \le i \le M),Bi=ApiB_i=A_{p_i}。
  7. (3030 分)N≤300N \le 300。
  8. (55 分)没有额外限制。