CF2156F1.Strange Operation (Easy Version)
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是本题的简单版本。本版本与其他版本的区别在于 n 的限制更小。只有完成了所有版本的题目,你才能 hack 本题。
给定一个长度为 n 的排列 p。你可以进行如下操作任意次(也可以不做):
- 选择三个互不相同的下标 i,j,k,满足 1≤i<j<k≤n,并且同时满足以下两个条件:pi=max(pj,pk)+1 并且 pi=min(pj,pk)+2。然后,将 pi 减去 2,pj 和 pk 都加上 1。形式化地,pi:=pi−2,pj:=pj+1,pk:=pk+1。
可以证明,通过上述操作后 p 仍然是一个排列,因为满足 pi=max(pj,pk)+1 和 pi=min(pj,pk)+2 两个条件。
你的任务是,在任意次操作后,求出可以得到的字典序最小的排列。
∗ 长度为 n 的排列是由 1 到 n 的所有整数按任意顺序排列而成的数组。例如,[2,3,1,5,4] 是一个排列,而 [1,2,2] 不是(2 出现了两次),[1,3,4] 也不是排列(n=3,但有 4 出现)。
† 若有两个长度相等的序列 a 和 b,若 a=b 且在第一个不同的位置,a 对应的元素小于 b 对应的元素,则称 a 的字典序小于 b。
输入格式
每组测试数据可能包含多组测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的组数。
每组测试用例的第一行包含一个整数 n(3≤n≤2000),表示排列 p 的长度。
第二行包含 n 个整数 p1,p2,…,pn(1≤pi≤n),表示排列 p 的元素。
保证所有测试用例的 n2 之和不超过 20002。
输出格式
对于每组测试用例,输出 n 个整数,表示在任意次操作后能够得到的字典序最小的排列。
输入输出样例
输入#1
5 4 3 2 1 4 5 3 4 5 2 1 5 2 4 5 3 1 7 5 3 4 1 2 6 7 10 2 7 5 1 3 9 4 10 6 8
输出#1
1 3 2 4 1 2 3 5 4 2 4 5 3 1 1 2 3 4 5 6 7 2 3 4 1 5 7 6 8 9 10
说明/提示
在第一组样例中,最优策略是对 i=1,j=2,k=3 进行一次操作。注意不能选择 i=1,j=3,k=4,因为这虽然满足第二个条件 p1=min(p3,p4)+2,但第一个条件 p1=max(p3,p4)+1 不满足。
在第二组样例中,可以按如下顺序操作:
- 选择 i=1,j=4,k=5,此时排列变为 [1,4,5,3,2]。
- 选择 i=2,j=4,k=5,此时排列变为 [1,2,5,4,3]。
- 选择 i=3,j=4,k=5,此时排列变为 [1,2,3,5,4]。
在第三组样例中,没有 i<j<k 的三元组同时满足上面的条件,因此无法操作。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?