CF2023A.Concatenation of Arrays
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定 n 个数组 a1,…,an,每个数组的长度均为 2,即 ai=[ai,1,ai,2]。你需要将这些数组按某种顺序拼接成一个长度为 2n 的数组,使得最终数组中的逆序对数 † 最小。注意,你不需要实际计算逆序对的数量。
更正式地说,你需要选择一个长度为 n 的排列 ‡ p,使得数组 b=[ap1,1,ap1,2,ap2,1,ap2,2,…,apn,1,apn,2] 的逆序对数尽可能少。
† 一个数组 c 的逆序对数是指满足 i<j 且 ci>cj 的下标对 (i,j) 的数量。
‡ 长度为 n 的排列是指由 1 到 n 的 n 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是(2 出现了两次),[1,3,4] 也不是(n=3 但数组中有 4)。
输入格式
每个测试点包含多组测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤105),表示数组的数量。
接下来的 n 行,每行包含两个整数 ai,1 和 ai,2(1≤ai,j≤109),表示第 i 个数组的两个元素。
保证所有测试用例中 n 的总和不超过 105。
输出格式
对于每个测试用例,输出 2n 个整数,表示你得到的数组的元素。如果有多种方案,输出任意一种均可。
输入输出样例
输入#1
4 2 1 4 2 3 3 3 2 4 3 2 1 5 5 10 2 3 9 6 4 1 8 7 1 10 20
输出#1
2 3 1 4 2 1 3 2 4 3 4 1 2 3 5 10 8 7 9 6 10 20
说明/提示
在第一个测试用例中,我们按顺序 2,1 拼接数组,得到的数组 b=[2,3,1,4],其逆序对如下:
- i=1,j=3,因为 b1=2>1=b3;
- i=2,j=3,因为 b2=3>1=b3。
因此,逆序对数为 2。可以证明这是最小的逆序对数。
在第二个测试用例中,我们按顺序 3,1,2 拼接数组,得到 b=[2,1,3,2,4,3],其逆序对如下:
- i=1,j=2,因为 b1=2>1=b2;
- i=3,j=4,因为 b3=3>2=b4;
- i=5,j=6,因为 b5=4>3=b6。
因此,逆序对数为 3。可以证明这是最小的逆序对数。
在第三个测试用例中,我们按顺序 4,2,1,5,3 拼接数组。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?