- 第一行包含一个整数 $ n $($ 1 \leq n \leq 2 \cdot 10^5 $),表示数字的数量。
- 第二行包含 $ n $ 个整数 $ a_1, a_2, \ldots, a_n $($ 0 \leq a_j < 2^{31} $),表示这些数字。
位元守护者的试炼
题目描述:
Vladislav 是一位出色的程序员,但他同时也是一位热衷于二进制魔法的魔法师。他最近得到了一个任务,来自一个叫做“位元守护者”的古老组织。组织交给他一批数字,这些数字都是魔法符号的编码,而 Vlad 的任务是将这些数字分成若干组,确保每一组的符号在二进制的第 $1$-位到第 $31$-位上都没有冲突。
什么是冲突? 如果在同一组内的两个符号在同一个二进制位上有相同的值(即都为 0 或都为 1),这会触发“位元冲突”,导致组内的魔法符号失效。为了避免这种情况,Vlad 必须非常小心地进行分组,确保每一组中的任何两个符号在任意一位二进制位上都不相同。
然而,位元守护者组织对效率要求很高。他们希望 Vlad 以最少的分组数完成任务。作为一名天才,Vlad 决定接受这个挑战,但他需要你的帮助来计算最少的分组数。
任务: 帮助 Vlad 确定最少需要多少组,才能完成他的魔法分组任务。每个数字必须且只能属于一个组。
输入
第一行包含一个整数 $ t $($ 1 \leq t \leq 10^4 $),表示测试用例的数量。
对于每个测试用例:
所有测试用例中,$ n $ 的总和不超过 $ 2 \cdot 10^5 $。
输出
对于每个测试用例,输出一个整数,表示满足条件所需的最少分组数。
输入用例
9
4
1 4 3 4
2
0 2147483647
5
476319172 261956880 2136179468 1671164475 1885526767
3
1335890506 811593141 1128223362
4
688873446 627404104 1520079543 1458610201
4
61545621 2085938026 1269342732 1430258575
4
0 0 2147483647 2147483647
3
0 0 2147483647
8
1858058912 289424735 1858058912 2024818580 1858058912 289424735 122665067 289424735
输出用例
4
1
3
2
2
3
2
2
4
注释
在第一个测试用例中,任意两个数字的最后 31 位是相同的,因此我们需要将每个数字放入自己独立的组。
在第二个测试用例中,$a_1 = 0000000000000000000000000000000_2$,$a_2 = 1111111111111111111111111111111_2$,它们可以放在同一组,因为对于每个 $i$($1 \leq i \leq 31$),$a_1(i) \ne a_2(i)$。
复制链接
https://www.lxxblog.cfd/index.php/archives/54/
相关文章
Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /usr/home/LXX123/domains/www.lxxblog.cfd/public_html/usr/themes/Farallon/comments.php on line 4
Deprecated: stripos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /usr/home/LXX123/domains/www.lxxblog.cfd/public_html/usr/themes/Farallon/comments.php on line 4
[...]题目列表古代王国的正交拉丁方阵秘文破解石碑中的三阶秘阵二进制谜题:中位数的秘密右 左 错魔法师的非递减之旅位元守护者的试炼题解列表古代王国的正交拉丁方阵秘文题解破解石碑中的三阶秘阵题解二进制谜题:中位数的秘密题解[右 左 错]魔法师的非递减之旅题解[位元守护者的试炼题解][...]