CF2113F.Two Arrays

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定两个长度为 nn 的数组 aa 和 bb。你可以无限次进行如下操作:

  • 选择一个整数 ii,其中 1≤i≤n1 \le i \le n,交换 aia_i 和 bib_i。

定义 f(c)f(c) 为数组 cc 中不同数字的个数。请你求出 f(a)+f(b)f(a) + f(b) 的最大值,并输出所有操作后得到的数组 aa 和 bb。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(1≤n≤1051 \le n \le 10^5),表示数组的长度。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤2n1 \le a_i \le 2n),表示数组 aa 的元素。

第三行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(1≤bi≤2n1 \le b_i \le 2n),表示数组 bb 的元素。

保证所有测试用例中 nn 的总和不超过 10510^5。

输出格式

对于每个测试用例,第一行输出一个整数,表示 f(a)+f(b)f(a) + f(b) 的最大值。

第二行输出 nn 个整数,表示所有操作后数组 aa 的元素。

第三行输出 nn 个整数,表示所有操作后数组 bb 的元素。

输入输出样例

  • 输入#1

    3
    5
    1 2 4 4 4
    1 3 3 5 2
    7
    2 2 4 4 5 5 5
    1 3 3 2 1 6 6
    7
    12 3 3 4 5 6 4
    1 2 13 8 10 13 7

    输出#1

    9
    1 3 4 5 2 
    1 2 3 4 4 
    12
    2 3 4 2 1 5 6 
    1 2 3 4 5 6 5 
    14
    12 3 13 8 10 6 4 
    1 2 3 4 5 13 7

说明/提示

在第一个测试用例中,经过 i=2i=2、i=4i=4 和 i=5i=5 三次操作后,可以得到 a=[1,3,4,5,2]a = [1, 3, 4, 5, 2],b=[1,2,3,4,4]b = [1, 2, 3, 4, 4]。此时 f(a)+f(b)=5+4=9f(a) + f(b) = 5 + 4 = 9。可以证明无法得到更大的答案。

在第二个测试用例中,经过操作后有 f([2,3,4,2,1,5,6])+f([1,2,3,4,5,6,5])=6+6=12f([2, 3, 4, 2, 1, 5, 6]) + f([1, 2, 3, 4, 5, 6, 5]) = 6 + 6 = 12。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页