CF2158B.Split
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个包含 2n 个整数的序列 a。定义 f(b) 表示序列 b 中出现次数为奇数的不同元素个数。你需要将所给数组划分为两个互不相交的子序列 p 和 q,每个子序列的大小均为 n,使得 f(p)+f(q) 的值最大。请输出最大值。
一个序列 a 是序列 b 的子序列,如果 a 可以通过从 b 中删除若干(可能为零或全部)位置的元素得到。
输入格式
每个测试点包含多组测试数据。第一行包含测试数据组数 t(1≤t≤104)。
接下来每组测试数据包含两行:
第一行包含一个整数 n(1≤n≤2⋅105)。
第二行包含 2n 个整数 a1,a2,…,a2n(1≤ai≤2n),即序列 a 的元素。
保证所有测试点中 n 的总和不超过 2⋅105。
输出格式
每组测试数据输出一行。
每行输出一个整数,表示能取得的 f(p)+f(q) 的最大值。
输入输出样例
输入#1
7 2 1 2 3 4 3 5 5 5 5 5 5 4 3 3 7 6 3 7 8 7 2 2 2 2 2 6 1 2 3 4 5 4 1 4 1 5 4 6 4 1 2 1 2 1 2 1 2 5 9 9 9 7 7 7 9 7 7 7
输出#1
4 2 4 0 8 4 2
说明/提示
对于第一个测试用例:
- 可以将数组划分为 p=[1,3] 和 q=[2,4]。
- 这样 f(p)=2,f(q)=2,因为每个都有两个出现次数为奇数的不同元素。
对于第二个测试用例:
- 可以将数组划分为 p=[5,5,5] 和 q=[5,5,5]。
- 这样 f(p)=1,f(q)=1。
对于第五个测试用例:
- 可以将数组划分为 p=[1,2,3,4,5,6] 和 q=[4,1,4,1,5,4]。
- 这样 f(p)=6,f(q)=2。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?