CF2124A.Deranged Deletions

入门

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

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

  • 令 cc 为长度为 mm 的数组,且 ci=bic_i = b_i,对于所有 1≤i≤m1 \leq i \leq m。
  • 将 cc 按非递减顺序排序。
  • 如果对于所有 1≤i≤m1 \leq i \leq m,都有 bi≠cib_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]。由于所有位置上 bi≠cib_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 中删除一个元素,删除后剩余元素的顺序保持不变。

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

输入格式

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

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

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤n1 \leq a_i \leq n),表示数组 aa。

输出格式

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

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

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

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

输入输出样例

  • 输入#1

    3
    3
    2 2 3
    5
    4 5 5 2 4
    1
    1

    输出#1

    NO
    YES
    4
    4 5 2 4
    NO

说明/提示

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

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页