Equal XOR(异或,思维)

devtools/2024/9/23 20:35:59/

文章目录

  • 题目描述
    • 输入格式
    • 输出格式
    • 样例输入1
    • 样例输出1
    • 样例输入2
    • 样例输出2
    • 样例输入3
    • 样例输出3
    • 提交链接
    • 提示
  • 解析
  • 参考代码

题目描述

给你一个长度为 2 ∗ n 2*n 2n 的数组 a a a ,它由 1 1 1 n n n 的每个整数组成,每个整数包含 2 2 2 次。同时给你一个整数 k ( 1 ≤ k ≤ ⌊ n 2 ⌋ ) k(1≤k≤⌊\frac{n}{2}⌋) k(1k2n⌋)

你需要找出两个长度分别为 2 ∗ k 2*k 2k 的数组 l l l r r r,使得:

  • l l l [ a 1 , a 2 , … a n ] [a_1,a_2,…a_n] [a1,a2,an] 的子集。
  • r r r [ a n + 1 , a n + 2 , . . . , a 2 n ] [a_{n+1},a_{n+2},...,a_{2n}] [an+1,an+2,...,a2n] 的子集。
  • l l l 元素的异或等于 r r r 元素的异或。换句话说: l 1 ⊕ l 2 ⊕ . . . ⊕ l 2 k = r 1 ⊕ r 2 ⊕ . . . r 2 k l_1⊕l_2⊕...⊕l_{2k}=r_1⊕r_2⊕...r_{2k} l1l2...l2k=r1r2...r2k 的子集。

至少有一对 l l l r r r 是存在的。如果有多个解,可以输出其中任意一个。

序列 x x x 是序列 y y y 的子集,如果 x x x 可以通过删除 y y y 中的几个元素(可能一个元素也没有或全部元素)并按任意顺序重新排列而得到。例如, [ 3 , 1 , 2 , 1 ] [3,1,2,1] [3,1,2,1] [ 1 , 2 , 3 ] [1,2,3] [1,2,3] [ 1 , 1 ] [1,1] [1,1] [ 3 , 2 ] [3,2] [3,2] [ 1 , 1 , 2 , 3 ] [1,1,2,3] [1,1,2,3] 的子集,但 [ 4 ] [4] [4] [ 2 , 2 ] [2,2] [2,2] 不是 [ 1 , 1 , 2 , 3 ] [1,1,2,3] [1,1,2,3] 的子集。

输入格式

第一行包含 2 2 2 个整数 n n n k k k ( 2 ≤ n ≤ 5 ⋅ 1 0 4 , 1 ≤ k ≤ ⌊ n 2 ) (2≤n≤5⋅10^4 , 1≤k≤⌊\frac{n}{2}) (2n5104,1k2n)

第二行包含 2 ∗ n 2*n 2n 个整数 a 1 , a 2 , . . . , a 2 n ( 1 ≤ a i ≤ n ) a_1,a_2,...,a_{2n}(1 \leq a_i \leq n) a1,a2,...,a2n(1ain)。保证从 1 1 1 n n n 的每个整数在 a a a 中恰好出现两次。

输出格式

输出两行。

在第一行输出中,输出 2 ∗ k 2*k 2k 个整数 l 1 , l 2 , . . . , l 2 k l_1,l_2,...,l_{2k} l1,l2,...,l2k

在第二行输出中,输出 2 ∗ k 2*k 2k 个整数 r 1 , r 2 , . . . , r 2 k r_1,r_2,...,r_{2k} r1,r2,...,r2k

如果有多个解,可以输出其中任意一个。

样例输入1

2 1
1 2 2 1

样例输出1

2 1
2 1

样例输入2

6 1
6 4 2 1 2 3 1 6 3 5 5 4

样例输出2

6 4
1 3

样例输入3

4 1
1 2 3 4 1 2 3 4

样例输出3

1 2
1 2

提交链接

https://hydro.ac/d/lp728/p/9

提示

样例解释:

样例 1 1 1 中,我们选择 l = [ 2 , 1 ] l=[2,1] l=[2,1] r = [ 2 , 1 ] r=[2,1] r=[2,1] [ 2 , 1 ] [2,1] [2,1] [ a 1 , a 2 ] [a_1,a_2] [a1,a2] 的子集, [ 2 , 1 ] [2,1] [2,1] [ a _ 3 , a _ 4 ] [a\_3,a\_4] [a_3,a_4] 的子集。 2 ⊕ 1 = 2 ⊕ 1 = 3 2⊕1=2⊕1=3 21=21=3 ,满足题意。

样例 2 2 2 中, 6 ⊕ 4 = 1 ⊕ 3 = 2 6⊕4=1⊕3=2 64=13=2 ,满足题意。

解析

根据数字在 a [ 1... n ] a[1...n] a[1...n] 中出现的次数分组。

a [ 1... n ] a[1...n] a[1...n] 中出现 0 0 0 次的数字组与在 a [ 1... n ] a[1...n] a[1...n] 中出现 2 2 2 次的数字组大小相同。(两个区间的长度一样,每个数最多出现 2 2 2 次,平均分)

我们可以将任何 2 2 2 出现的数字添加到序列 l l l 中,也可以将任何 0 0 0 出现的数字添加到序列 r r r 中,不会出现任何问题,因为 x o r xor xor 值会抵消。

我们根据需要使用尽可能多的 1 1 1 出现数追加到 l l l r r r 中。由于我们对两个序列都进行了追加, 两个序列的 x o r xor xor 值将是相同的。

参考代码

#include <bits/stdc++.h>
using namespace std;int main()
{int t;cin >> t;while (t--){int n, k;cin >> n >> k;k = 2 * k;vector <int> a(2 * n), occ(n + 1, 0);for (auto &x : a) cin >> x;for (int i = 0; i < n; i++) occ[a[i]]++;vector <int> g0, g1, g2;for (int i = 1; i <= n; i++){if (occ[i] == 0) g0.push_back(i);else if (occ[i] == 1) g1.push_back(i);else g2.push_back(i);}int v = 0;for (auto x : g2){if (v < k){v += 2;cout << x << " " << x << " ";}}for (auto x : g1){if (v < k){v++;cout << x << " ";}}cout << "\n";v = 0;for (auto x : g0){if (v < k){v += 2;cout << x << " " << x << " ";}}for (auto x : g1){if (v < k){v++;cout << x << " ";}}cout << "\n";}return 0;
}

http://www.ppmy.cn/devtools/43774.html

相关文章

WordPress建网站公司 建易WordPress建站

建易WordPress建网站公司是一家专业从事WordPress网站建设、网站维护、网站托管、运营推广和搜索引擎优化(SEO)等服务的公司。建易WordPress建网站公司提供多种服务&#xff0c;包括模板建站和定制网站&#xff0c;并且明码标价&#xff0c;价格透明&#xff0c;竭诚为全国各地…

LeetCode 264 —— 丑数 II

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 第一个丑数是 1 1 1&#xff0c;由于丑数的质因子只包含 2 、 3 、 5 2、3、5 2、3、5&#xff0c;所以后面的丑数肯定是前面的丑数分别乘以 2 、 3 、 5 2、3、5 2、3、5 后得到的数字。 这样&#xff0c;我…

day34 贪心算法 455.分发饼干 376. 摆动序列

贪心算法理论基础 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心一般解题步骤&#xff08;贪心无套路&#xff09;&#xff1a; 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 455.分发饼干 …

在flutter initState 方法,触发 setState导致循环执行

在Flutter中&#xff0c;如果你在initState中调用了一个方法&#xff0c;并且这个方法可能导致状态更新&#xff0c;这可能会引起无限循环&#xff0c;因为每次状态更新都会再次调用initState。 为了避免这种情况&#xff0c;你应该检查调用的方法是否会导致状态更新&#xff…

ElasticSearch - 删除已经设置的认证密码(7.x)

文章目录 Pre版本号 7.x操作步骤检查当前Elasticsearch安全配置停止Elasticsearch服务修改Elasticsearch配置文件删除密码重启Elasticsearch服务验证配置 小结 Pre Elasticsearch - Configuring security in Elasticsearch 开启用户名和密码访问 版本号 7.x ES7.x 操作步骤 …

深度学习中文笔记.pdf

深度学习和机器学习应该如何入门呢&#xff1f;这是很多初学者经常提的问题&#xff0c;针对这个问题&#xff0c;相信很多过来人都会推荐吴恩达的在线课程。不过&#xff0c;由于是英文版本&#xff0c;就将很多人挡在了门外。 于是&#xff0c;在国内&#xff0c;以黄海广博士…

word如何创造新的格式标题

1 效果如下&#xff1a;&#xff08;标题命名默认音序排序&#xff09; 2 创建 选中自己喜欢的标题&#xff0c;修改字号字体&#xff0c;then 3 修改 注意要点如下&#xff1a; 后续&#xff1a;以上操作可能导致后续一级标题不能折叠二级标题&#xff0c;目录导航栏也不能…

一篇文章带你快速搞定Kafka术语no.2

在Kafka的世界中有很多概念和术语是需要你提前理解并熟练掌握的&#xff0c;这对于后面你深入学习Kafka各种功能和特性将大有裨益。下面我来盘点一下Kafka的各种术语。 在专栏的第一期我说过Kafka属于分布式的消息引擎系统&#xff0c;它的主要功能是提供一套完备的消息发布与…