国产操作系统生态圈推动信息安全与技术自主发展的新机遇
535
2022-08-26
HDU 3949 XOR (线性基,模板)
Description
XOR is a kind of bit operator, we define that as follow: for two binary base number A and B, let C=A XOR B, then for each bit of C, we can get its value by check the digit of corresponding position in A and B. And for each digit, 1 XOR 1 = 0, 1 XOR 0 = 1, 0 XOR 1 = 1, 0 XOR 0 = 0. And we simply write this operator as ^, like 3 ^ 1 = 2, 4 ^ 3 = 7. XOR is an amazing operator and this is a question about XOR. We can choose several numbers and do XOR operatorion to them one by one, then we get another number. For example, if we choose 2, 3 and 4, we can get 2^3^4=5. Now, you are given N numbers, and you can choose some of them(even a single number) to do XOR on them, and you can get many different numbers. Now I want you tell me which number is the K-th smallest number among them.
Input
First line of the input is a single integer T(T<=30), indicates there are T test cases.For each test case, the first line is an integer N(1<=N<=10000), the number of numbers below. The second line contains N integers (each number is between 1 and 10^18). The third line is a number Q(1<=Q<=10000), the number of queries. The fourth line contains Q numbers(each number is between 1 and 10^18) K1,K2,……KQ.
Output
For each test case,first output Case #C: in a single line,C means the number of the test case which is from 1 to T. Then for each query, you should output a single line contains the Ki-th smallest number in them, if there are less than Ki different numbers, output -1.
Sample Input
221 241 2 3 431 2 351 2 3 4 5
Sample Output
Case #1:123-1Case #2:0123-1
题意
给定长度为 n n 的数组,有 qq 次查询,每次查询由数组的子集所异或出结果的第 k k
思路
将数组所有元素插入线性基中,然后对其进行 rebuild 操作:从高位往低位开始枚举,对于每一个 ii ,枚举 j
操作结束以后,对于 d[i] d [ i ] 来说只有 i i 这一位为 11 ,其余位都为 0 0 ,我们按从小到大的顺序把其中的非零元素放入 pp
在查询第 k k 大异或值的时候,我们根据 kk 的二进制进行构造,对于 1 1 的位,便异或上相应的 p[i]p[i]
需要注意的是由线性基所异或出的结果都是非零的,而查询的第 k k 小异或值可能为零,于是我们需要在构造线性基的时候判断当前这些数能否异或出 00
AC 代码
#include
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~