#include <stdio.h>
int main()
{
puts("转载请注明出处谢谢");
puts("http://blog.csdn.net/vmurder/article/details/43448493");
}
题意:给若干个数让你异或,然后询问第k大的异或和。
题解:
先搞出来线性基,然后第k大的异或和就是:
把k二进制拆分,第i位上有1,就把第i个线性基异或进来。
原因:
因为线性基是一堆高位上的1(或许有一些位动不了),然后把这样每一位可以填0/1,跟二进制差不多。