【笔记】 异或高斯消元方案数

与正常高斯消元只有一点不同:

如果检查到了自由元,并不代表当前这个方程无用,不能跳过这个方程,而是应该跳过这个元。

std::bitset<MX> E[MX];

int solve(){
	int ans = 1 ,r = 1;
	for(int i = 1 ; i <= n ; ++i){
		int Main = 0;
		for(int j = r ; j <= n ; ++j){
			if(E[j][i]){
				Main = j;
				break;
			}
		}
		if(!Main){
			ans = ans * 2 % MOD;
			continue;
		}
		std::swap(E[Main] ,E[r]);
		for(int j = 1 ; j <= n ; ++j){
			if(r == j) continue;
			if(E[j][i]) E[j] ^= E[r];
		}
		++r;
	}
	return ans;
}
原文地址:https://www.cnblogs.com/imakf/p/14288266.html