P13786 [eJOI 2022] LCS of Permutations

题目描述

对于两个序列 $x$ 和 $y$,我们定义 $LCS(x, y)$ 为它们的最长公共子序列的长度。 现在给定 4 个整数 $n, a, b, c$。请判断是否存在 3 个 $1 \sim n$ 的排列 $p, q, r$,满足: - $LCS(p, q) = a$ - $LCS(p, r) = b$ - $LCS(q, r) = c$ 如果存在这样的排列,请输出任意一组满足条件的排列三元组。 一个排列 $p$ 是 $1 \sim n$ 的一个排列,当且仅当 $p$ 是长度为 $n$ 的序列,并且其中所有元素互不相同,且取值范围为 $[1, n]$。例如,$(2, 4, 3, 5, 1)$ 是 $1 \sim 5$ 的一个排列,而 $(1, 2, 1, 3, 5)$ 和 $(1, 2, 3, 4, 6)$ 则不是。 一个序列 $c$ 是序列 $d$ 的一个子序列,当且仅当 $c$ 可以通过从 $d$ 中删除若干(可能是零个,也可能是全部)元素得到。例如,$(1, 3, 5)$ 是 $(1, 2, 3, 4, 5)$ 的子序列,而 $(3, 1)$ 不是。 两个序列 $x$ 和 $y$ 的最长公共子序列,指的是一个同时为 $x$ 和 $y$ 的子序列的最长序列。例如,$x = (1, 3, 2, 4, 5)$ 与 $y = (5, 2, 3, 4, 1)$ 的最长公共子序列为 $z = (2, 4)$,因为它既是两者的子序列,又是所有公共子序列中最长的一个。此时 $LCS(x, y) = 2$。

输入格式

输入的第一行包含一个整数 $t$($1 \leq t \leq 10^5$),表示测试用例的数量。接下来是 $t$ 个测试用例。 每个测试用例包含一行 5 个整数 $n, a, b, c, output$($1 \leq a \leq b \leq c \leq n \leq 2 \cdot 10^5$, $0 \leq output \leq 1$)。 - 若 $output = 0$,仅需判断是否存在这样的排列。 - 若 $output = 1$,在存在的情况下,还需输出一组满足条件的排列三元组。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,若存在满足条件的排列 $p, q, r$,则第一行输出 "YES",否则输出 "NO"。 如果 $output = 1$ 且存在解,则再输出三行: - 第一行输出排列 $p$:$p_1, p_2, \ldots, p_n$ - 第二行输出排列 $q$:$q_1, q_2, \ldots, q_n$ - 第三行输出排列 $r$:$r_1, r_2, \ldots, r_n$ 如果有多组解,输出任意一组即可。 输出时字母大小写不敏感(例如 "YES"、"Yes"、"yes"、"yEs" 都视为正确)。

说明/提示

### 样例解释 在第一个测试用例中,$LCS((1), (1)) = 1$。 在第二个测试用例中,可以证明不存在这样的排列。 在第三个测试用例中,其中一种可能的解为: - $p = (1, 3, 5, 2, 6, 4)$ - $q = (3, 1, 5, 2, 4, 6)$ - $r = (1, 3, 5, 2, 4, 6)$ 此时: - $LCS(p, q) = 4$(例如 $(1, 5, 2, 6)$ 是一个最长公共子序列) - $LCS(p, r) = 5$(例如 $(1, 3, 5, 2, 4)$) - $LCS(q, r) = 5$(例如 $(3, 5, 2, 4, 6)$) 在第四个测试用例中,可以证明不存在这样的排列。 ### 评分规则 1. (3 分):$a = b = 1, c = n, output = 1$ 2. (8 分):$n \leq 6, output = 1$ 3. (10 分):$c = n, output = 1$ 4. (17 分):$a = 1, output = 1$ 5. (22 分):$output = 0$ 6. (40 分):$output = 1$ --- 翻译由 ChatGPT-5 完成