C. 疯狂的删除

    传统题 1000ms 256MiB

疯狂的删除

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

问题描述

如果以下属性成立,则将长度为 mm 的数组 bb 称为疯狂数组

  • cc 是一个长度为 mm 的数组,且 ci=bic_i = b_i 覆盖所有 1im1 \leq i \leq m
  • cc 按非递减顺序排序。
  • 如果 bicib_i\neq c_i 覆盖所有 1im1\leq i \leq m ,那么 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 中删除一个元素。每次删除后,其余元素的顺序都会保持不变。

输出是否有可能执行一些(可能没有)操作,从而使剩余元素形成一个疯狂数组。如果可能,则输出任何可能的剩余数组。剩余数组必须是非空的。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt ( 1t1001 \le t \le 100 )。测试用例说明如下。

每个测试用例的第一行都包含一个整数 nn ( 1n1001 \leq n \leq 100 ) - 数组 aa 的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n ( 1ain1 \leq a_i \leq n ) - 表示数组 aa

输出格式

对于每个测试用例,在新的一行中,如果可以执行操作,使得剩余数组是疯狂的,则输出 "YES"。否则,输出 "NO"。

如果您的回答是肯定的,则按以下格式再输出两行:

  • 第一行应包含一个整数 kk ( 1kn1 \leq k \leq n ),即数组中剩余元素的个数。
  • 第二行应该包含 d1,d2,dkd_1, d_2 \ldots, d_k ,即数组中剩余的元素。在对数组 aa 进行操作后,必须能够得到数组 dd 。数组 dd 必须为疯狂

样例输入

3
3
2 2 3
5
4 5 5 2 4
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] 是另一个有效的解决方案。

基础公开训练(第三场)

未参加
状态
已结束
规则
IOI
题目
6
开始于
2025-7-15 16:30
结束于
2025-7-23 4:30
持续时间
180 小时
主持人
参赛人数
8