#P10297. [CCC 2024 S3] Swipe

[CCC 2024 S3] Swipe

题目描述

Swipe 是一款新的手机游戏,最近大受欢迎。在 Swipe 游戏的每一个关卡中,您都会得到两个长度为 NN 的数列 AABB。Swipe 游戏的每个关卡的目标是把数组 AA 变成数组 BB

现在有两种可以对 AA 进行的滑动操作。

  • 向右滑动:选择一个区间 [l,r][l, r],对任意 lirl \leq i \leq rAi=AlA_i = A_l
  • 向左滑动:选择一个区间 [l,r][l, r],对任意 lirl \leq i \leq rAi=ArA_i = A_r

例如,一开始 A=[0,1,2,3,4,5]A = [0, 1, 2, 3, 4, 5],如果我们对区间 [2,4][2, 4] 做向右滑动的操作,序列变为 [0,1,2,2,2,5][0, 1, 2, 2, 2, 5]。如果我们对区间 [3,5][3, 5] 左向左滑动的操作,序列变为 [0,1,2,5,5,5][0, 1, 2, 5, 5, 5]。注意序列从 00 开始编号。

不幸的是,游戏存在一些问题,可能会包含无法通过的关卡。请问是否可以将数组 AA 转换为数组 BB。如果可以,请给出任意一种将数组 AA 转换为数组 BB 的滑动操作方案。

输入格式

输入的第一行包含一个正整数 NN 表示两个数列的长度。

第二行包含 NN 个空格隔开的 AA 中的整数。

第三行包含 NN 个空格隔开的 BB 中的整数。

输出格式

如果存在一种操作方案可以把 AA 变为 BB,在第一行输出 YES,否则输出 NO

如果在第一行输出了 YES,则下一行包含一个非负整数 KKKNK \leq N)表示滑动次数。

接下来 KK 行每行包含三个空格隔开的数 Dj,ljD_j,l_jrjr_jDjD_jR 或者 L 表示第 jj 次操作是向右滑动还是向左滑动。

ljl_jrjr_j 表示这次滑动操作的左端和右端,必须满足 0ljrj<N0 \leq l_j \leq r_j < N

3
3 1 2
3 1 1

YES
1
R 1 2

4
1 2 4 3
1 4 2 3

NO

4
2 1 4 3
2 1 4 3

YES
0

提示

本题采用捆绑测试。

对于所有数据,保证 1N3×1051 \leq N \leq 3 \times 10^51Ai,Bi3×1051 \leq A_i, B_i \leq 3 \times 10^5

下面的表格显示了 1515 分的分配方案:

分值 NN 的范围 AiA_iBiB_i 的范围
22 N=2N = 2 1Ai,Bi31 \leq A_i, B_i \leq 3
44 1N81 \leq N \leq 8 1Ai,Bi81 \leq A_i, B_i \leq 8
1N5001 \leq N \leq 500 1Ai,Bi30001 \leq A_i, B_i \leq 3000
55 1N3×1051 \leq N \leq 3 \times 10^5 1Ai,Bi3×1051 \leq A_i, B_i \leq 3 \times 10^5

注意对于一个分值为 MM 的子任务,如果只答对了第一行的内容,你可以得到 M2\left\lfloor\dfrac M2\right\rfloor 分。