CF1672F1 Array Shuffling

题目描述

oolimry 有一个长度为 $n$ 的数组 $a$,他非常喜欢这个数组。今天,你将他的数组变成了 $b$,$b$ 是 $a$ 的一个排列,这让他很伤心。 因为 oolimry 只是一只鸭子,他只能通过以下操作来恢复他的数组: - 选择两个整数 $i,j$,满足 $1 \leq i,j \leq n$。 - 交换 $b_i$ 和 $b_j$。 数组 $b$ 的“伤心值”定义为将 $b$ 变回 $a$ 所需的最少操作次数。 给定数组 $a$,请你构造任意一个 $b$,使得 $b$ 是 $a$ 的一个排列,并且在所有排列中 $b$ 的伤心值最大。

输入格式

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

输出格式

对于每组测试用例,输出 $n$ 个整数 $b_1, b_2, \ldots, b_n$,表示数组 $b$。如果有多种答案,可以输出任意一种。

说明/提示

在第一个测试用例中,数组 $[1,2]$ 的伤心值为 $1$。我们可以通过一次操作 $(i,j)=(1,2)$ 将 $[1,2]$ 变为 $[2,1]$。 在第二个测试用例中,数组 $[3,3,2,1]$ 的伤心值为 $2$。我们可以通过两次操作,分别为 $(i,j)=(1,4)$ 和 $(i,j)=(2,3)$,将 $[3,3,2,1]$ 变为 $[1,2,3,3]$。 由 ChatGPT 4.1 翻译