線性基 HDU3949 XOR 題解

2021-08-15 01:31:12 字數 989 閱讀 9791

給出

n n

個數,求選出的非空集合中異或和第

k' role="presentation">k

k小的異或和(異或和相同算一次),沒有

k k

個輸出 −1

' role="presentation">−1−

1。如果構造線性基時將矩陣消成對角矩陣,得到的線性基就有乙個很棒的性質:最高位為

i i

的數至多只有乙個,且其他數第 i 位為

0' role="presentation">0

0(即使得到的線性基無法表示為對角矩陣,只要按照消成對角矩陣的方法去構造,也滿足這個性質)。

因為最高位為

i i

的數至多只有乙個,所以挑出矩陣中的非零項

' role="presentation">, ∑

m−1i

=0bi

(kan

d2i)

∑ i=

0m−1

bi(k

and2

i)

就是答案。

#include

#include

typedef

long

long ll;

using

namespace

std;

const

int log=60;

int te,n,q;ll m[log],b[log];

inline

void insert(ll x)

}int main()

for (int i=0;iif (m[i]) b[++b[0]]=m[i];

for (scanf("%d",&q);q;q--)

if (b[0]puts("-1"); else

printf("%lld\n",ans);}}

return

0;}

HDU 3949 XOR 線性基 高斯消元

hdu 3949 xor hdu3949xor 搞死消元找到一組線性無關組 消出對角矩陣後 對於k二進位制拆分 對於每列只有有乙個1的,顯然可以用k的二進位制數直接異或得到第k大 對於一列由多個1的,由於二進位制性質,由於2的冪 1次方比2的 1到冪 的和要大,所以不影響大小 include inc...

hdu3949 XOR 線性基求xor第k小

題目大意 求xor所有值的第k小,線性基模板題。include include include include include include using namespace std typedef long long ll const int max base 63 ll base 64 a 10...

線性代數 hdu 3949 XOR

題意 給你n個數,要你從中取出若干個進行異或運算,求最後所有可以得到的異或結果中的 第k小的異或值。n 10 18 這個題是用來研究xor性質的一道好題。首先我們可以暴力地找出些規律,我們發現不管拿出多少個數,他們能xor到的數,出現的次數都是一樣的,並且都是2的倍數。事實上,我們不論用原數ai還是...