題目大意:求xor所有值的第k小,線性基模板題。
#include#include#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int max_base=63
;ll
base[64],a[10006
],n,m;
//構造線性基,也可用來判斷x是否存在,最後返回是否等於0即可。
void
getbase()
a[i]^=base
[j];}}
}}//從高位到低位掃瞄線性基。如果異或之後答案變大,就把這一位異或到答案。
ll query_max()
} return
ans;}//
從低位到高位掃瞄線性基。最低位上的線性基即為答案。
ll query_min()
ll cnt,p[
64];
//注意0的特殊情況,判斷if(n!=cnt)k--;
void
rebuild()
for(int i=0;i<=max_base;i++)
if(base
[i])
p[cnt++]=base
[i];
}ll query_k_max(ll k)
return
ans;
}int
main()
} return0;
}
線性基 HDU3949 XOR 題解
給出 n n 個數,求選出的非空集合中異或和第 k role presentation k k小的異或和 異或和相同算一次 沒有 k k 個輸出 1 role presentation 1 1。如果構造線性基時將矩陣消成對角矩陣,得到的線性基就有乙個很棒的性質 最高位為 i i 的數至多只有乙個,且...
HDU3949 XOR(高斯消元求線性基)
傳送門 題意 給出若干個數,求第k大的異或和 我tm已經沒心情寫這個題解了 就因為找了乙個錯誤的 當對拍這題坑了我一節多晚自習 比較有價值的就是位運算不要輕易用 最好是預處理然後 一下 高斯消元求線性無關組 有n個就說明有2n 1個答案 從大到小排序,將k二進位制分解,選最高位 特判0的情況 inc...
HDU 3949 XOR 線性基 高斯消元
hdu 3949 xor hdu3949xor 搞死消元找到一組線性無關組 消出對角矩陣後 對於k二進位制拆分 對於每列只有有乙個1的,顯然可以用k的二進位制數直接異或得到第k大 對於一列由多個1的,由於二進位制性質,由於2的冪 1次方比2的 1到冪 的和要大,所以不影響大小 include inc...