CF2124A.Deranged Deletions
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
如果一个长度为 m 的数组 b 满足以下性质,则称其为“错位排列”:
- 令 c 为长度为 m 的数组,且 ci=bi,对于所有 1≤i≤m。
- 将 c 按非递减顺序排序。
- 如果对于所有 1≤i≤m,都有 bi=ci,则 b 是一个错位排列。
例如:
- 如果 b=[4,8,3,1],则排序后 c=[1,3,4,8]。由于所有位置上 bi=ci,所以 b 是一个错位排列。
- 如果 b=[3,2,1],排序后 c=[1,2,3]。由于 b2=c2,所以 b 不是错位排列。
现在给定一个长度为 n 的数组 a。每次操作你可以从 a 中删除一个元素,删除后剩余元素的顺序保持不变。
请判断是否可以通过若干次(可以为零次)操作,使得剩下的数组是一个错位排列。如果可以,输出任意一个可能的剩余数组。剩余数组必须非空。
输入格式
每组测试数据包含多组测试用例。第一行包含测试用例个数 t(1≤t≤100)。接下来是每组测试用例的描述。
每组测试用例的第一行包含一个整数 n(1≤n≤100),表示数组 a 的长度。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n),表示数组 a。
输出格式
对于每个测试用例,输出一行,如果可以通过若干次操作使剩余数组为错位排列,输出 YES,否则输出 NO。
输出不区分大小写,例如 "yEs"、"yes"、"Yes" 和 "YES" 都视为肯定回答。
如果你的回答是肯定的,请再输出两行,格式如下:
- 第一行输出一个整数 k(1≤k≤n),表示剩余数组的元素个数。
- 第二行输出 d1,d2,…,dk,表示剩余的数组。该数组必须可以通过对 a 进行若干次操作得到,并且是一个错位排列。
输入输出样例
输入#1
3 3 2 2 3 5 4 5 5 2 4 1 1
输出#1
NO YES 4 4 5 2 4 NO
说明/提示
在第二个测试用例中,我们可以删除一个 5,使数组变为 [4,5,2,4]。可以证明该数组是一个错位排列。这不是唯一解——原数组 [4,5,5,2,4] 也是一个合法解。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?