编程题
### 问题描述 给由 $ n $ 个数组成的一个可重集 $ S $,多次询问,每次给定一个数 $K$,求一个集合 $ T \subseteq S $,使得集合 $ T $ 在 $ S $ 的所有非空子集的不同的异或和中,其异或和 $ T_1 \oplus T_2 \oplus \ldots \oplus T_{|T|} $ 是第 $ K $ 小的。 ### 输入格式 输入包括四行: 第一行是一个整数 $n$。 第二行 $ n $ 个数,表示集合 $ S $。 第三行一个数 $q$,表示询问次数。 第四行 $q$ 个数,表示每一次询问的 $ K$。 ### 输出格式 输出包括 $q$ 行: 每行一个整数,对应每一次询问的答案,第 $K$ 小的异或和。如果集合 $ S $ 的所有非空子集中,不同的异或和数量不足 $ k $,输出 $ -1 $。 ### 样例输入 ```text 3 1 2 3 5 1 2 3 4 5 ``` ### 样例输出 ```text 0 1 2 3 -1 ``` ### 说明 对于最后一次询问,$1,2,3$ 能组出的不同数的数量为 $4$,所以不存在第五小的异或和,因此输出 $-1$。 ### 评测数据规模 $ 1 \leq n, m \leq 10 ^ 5, 0 \leq S_i < 2 ^ {51} $。
查看答案
赣ICP备20007335号-2