线性基
数学知识:https://blog.sengxian.com/algorithms/linear-basis
题单:https://www.luogu.com.cn/training/11251#information
线性基用于解决最大异或和问题等
线性基板子
#define int long long
const int N = 100, Max_M = 51;
int arr[N], brr[Max_M+1];
int n;
void linear_basis()
{
for(int i = 1; i <= n; ++ i)
for(int j = Max_M; j >= 0; -- j)
if(arr[i] >> j & 1)
{
if(brr[j]) arr[i] ^= brr[j];
else
{
brr[j] = arr[i];
for(int k = j - 1; k >= 0; -- k)
if(brr[k] && brr[j] >> k & 1) brr[j] ^= brr[k];
for(int k = j + 1; k <= Max_M; ++ k)
if(brr[k] >> j & 1) brr[k] ^= brr[j];
break;
}
}
}
浙公网安备 33010602011771号