题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3949
题目大意
给定 n n n个数以及q个询问,每个询问要求输出这 n n n个数的所有非空子集的异或值中第 k k k小的值,若不存在该值输出-1。
思路
裸的线性基,顺便放个板子。
维护线性基时一定要从低位往高位维护。
AC代码
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<stdlib.h>
#include<string.h>
using namespace std;
typedef long long ll;
ll n,q,qu,t,a[100000],Case=0;
typedef struct L_B
{
#define NUM 30
private:
ll b[NUM+5],p[NUM+5],flag,cnt;
public:
void insert(ll now)//插入
{
for(int i=NUM;i>=0;--i)
{