loj#P3888. 「eJOI2022」LCS of Permutations

「eJOI2022」LCS of Permutations

题目描述

本题译自 eJOI2022 Problem F. LCS of Permutations

对于两个序列 x,yx,y,定义 LCS(x,y)\text{LCS}(x,y) 为它们最长公共子序列的长度。

给定四个整数 n,a,b,cn,a,b,c。确定是否存在三个长度为 nn 的从 11nn 的整数的排列 p,q,rp,q,r,满足:

  • LCS(p,q)=a\text{LCS}(p,q)=a
  • LCS(p,r)=b\text{LCS}(p,r)=b
  • LCS(q,r)=c\text{LCS}(q,r)=c

如果这样的排列存在,找出这样排列的三元组。

11nn 的整数排列 pp 是一个长度为 nn 的序列,序列中所有元素都在 [1,n][1,n] 中并且两两不同。例如,(2,4,3,5,1)(2,4,3,5,1) 是一个从 1155 的整数排列,而 (1,2,1,3,5),(1,2,3,4,6)(1,2,1,3,5),(1,2,3,4,6) 不是。

如果一个序列 dd 可以通过删除一些(可能不删,也可能删除全部)元素得到序列 cc,则称序列 cc 是序列 dd 的子序列。例如 (1,3,5)(1,3,5)(1,2,3,4,5)(1,2,3,4,5) 的一个子序列,而 (3,1)(3,1) 不是。

序列 xxyy 的最长公共子序列是满足同时为 xxyy 的子序列中最长的一个。例如,x=(1,3,2,4,5)x=(1,3,2,4,5)y=(5,2,3,4,1)y=(5,2,3,4,1) 的最长公共子序列是 z=(2,4)z=(2,4),因为它是两个序列的子序列,并且是最长的。LCS(x,y)\text{LCS}(x,y) 是最长公共子序列的长度,上述例子中这个值为 22

输入格式

第一行包含一个整数 t (1t105)t\ (1\le t\le 10^5),表示测试点个数。每个测试点描述如下。

每组测试点只有一行,包含五个整数 $n,a,b,c,output\ (1\le a\le b\le c\le n\le 2\cdot 10^5,0\le output\le 1)$。

如果 output=0output=0,只需要确定这样的排列是否存在。如果 output=1output=1,如果这样的排列存在,你还要输出这样排列的三元组。

保证一组测试数据中所有测试点的 nn 的总和不超过 21052\cdot 10^5

输出格式

对于每个测试点,如果这样的排列 p,q,rp,q,r 存在,输出 YES,否则输出 NO。如果 output=1output=1,并且这样的排列存在,再输出三行:

第一行输出 nn 个整数 p1,p2,,pnp_1,p_2,\ldots,p_n,表示排列 pp

第二行输出 nn 个整数 q1,q2,,qnq_1,q_2,\ldots,q_n,表示排列 qq

第三行输出 nn 个整数 r1,r2,,rnr_1,r_2,\ldots,r_n,表示排列 rr

如果有多个这样的三元组,输出任意一个即可。

对于每个字母,你可以输出任何大小写情况。(例如,YESYesyesyEs 都会被判定为正向答案。)

8
1 1 1 1 1
4 2 3 4 1
6 4 5 5 1
7 1 2 3 1
1 1 1 1 0
4 2 3 4 0
6 4 5 5 0
7 1 2 3 0

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

评分

详细子任务附加限制及分值如下表所示。

子任务编号 附加限制 分值
11 a=b=1,c=n,output=1a=b=1,c=n,output=1 33
22 n6,output=1n\le 6,output=1 88
33 c=n,output=1c=n,output=1 1010
44 a=1,output=1a=1,output=1 1717
55 output=0output=0 2222
66 output=1output=1 4040