CF2124A.Deranged Deletions

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Deranged Deletions

题目描述

如果一个长度为 mm 的数组 bb 满足以下性质,则称其为“错位排列”:

  • cc 为长度为 mm 的数组,且 ci=bic_i = b_i,对于所有 1im1 \leq i \leq m
  • cc 按非递减顺序排序。
  • 如果对于所有 1im1 \leq i \leq m,都有 bicib_i \neq c_i,则 bb 是一个错位排列。

例如:

  • 如果 b=[4,8,3,1]b = [4,8,3,1],则排序后 c=[1,3,4,8]c = [1, 3, 4, 8]。由于所有位置上 bicib_i \neq c_i,所以 bb 是一个错位排列。
  • 如果 b=[3,2,1]b = [3,2,1],排序后 c=[1,2,3]c = [1, 2, 3]。由于 b2=c2b_2 = c_2,所以 bb 不是错位排列。

现在给定一个长度为 nn 的数组 aa。每次操作你可以从 aa 中删除一个元素,删除后剩余元素的顺序保持不变。

请判断是否可以通过若干次(可以为零次)操作,使得剩下的数组是一个错位排列。如果可以,输出任意一个可能的剩余数组。剩余数组必须非空。

输入格式

每组测试数据包含多组测试用例。第一行包含测试用例个数 tt1t1001 \le t \le 100)。接下来是每组测试用例的描述。

每组测试用例的第一行包含一个整数 nn1n1001 \leq n \leq 100),表示数组 aa 的长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ain1 \leq a_i \leq n),表示数组 aa

输出格式

对于每个测试用例,输出一行,如果可以通过若干次操作使剩余数组为错位排列,输出 YES,否则输出 NO。

输出不区分大小写,例如 "yEs"、"yes"、"Yes" 和 "YES" 都视为肯定回答。

如果你的回答是肯定的,请再输出两行,格式如下:

  • 第一行输出一个整数 kk1kn1 \leq k \leq n),表示剩余数组的元素个数。
  • 第二行输出 d1,d2,,dkd_1, d_2, \ldots, d_k,表示剩余的数组。该数组必须可以通过对 aa 进行若干次操作得到,并且是一个错位排列。

说明/提示

在第二个测试用例中,我们可以删除一个 55,使数组变为 [4,5,2,4][4,5,2,4]。可以证明该数组是一个错位排列。这不是唯一解——原数组 [4,5,5,2,4][4,5,5,2,4] 也是一个合法解。

由 ChatGPT 4.1 翻译

样例

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

在线编程 IDE

建议全屏模式获得最佳体验