CF1762G Unequal Adjacent Elements

题目描述

给定一个由 $n$ 个正整数组成的数组 $a$。 请你找到 $[1,2,\dots,n]$ 的任意一个排列 $p$,使得: - 对于所有 $3 \leq i \leq n$,都有 $p_{i-2} < p_i$; - 对于所有 $2 \leq i \leq n$,都有 $a_{p_{i-1}} \neq a_{p_i}$。 如果不存在这样的排列,请输出不存在。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \leq t \leq 10^5$),表示测试用例的数量。接下来是每组测试用例的描述。 每组测试用例的第一行包含一个整数 $n$($3 \leq n \leq 3 \cdot 10^5$),表示数组 $a$ 的长度。 第二行包含 $n$ 个用空格分隔的整数 $a_1,a_2,\ldots,a_n$($1 \leq a_i \leq n$),表示数组 $a$。 保证所有测试用例中 $n$ 的总和不超过 $3 \cdot 10^5$。

输出格式

对于每组测试用例,如果不存在满足条件的排列,输出 "NO"。否则,第一行输出 "YES",第二行输出排列 $p$。 如果存在多个满足条件的排列,输出任意一个均可。 你可以以任意大小写输出 "YES" 和 "NO"(例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定回答)。

说明/提示

在第一个测试用例中,$p=[1,2,3]$ 是唯一满足条件的排列。 在第二个测试用例中,$[1,3,2,4]$、$[2,1,4,3]$ 以及其他一些排列也是可行的。 在第三个测试用例中,可以证明不存在任何满足条件的 $[1,2,3]$ 的排列。 由 ChatGPT 4.1 翻译