线性基

线性基,给定一个数列,需要我们求出一个集合,要求对于每一个数列中的元素,都可以在集合中找到一些元素异或起来与其相等,并且要求集合元素最少。

代码出奇的简单好懂……

for(int i = 1;i <= m;i ++) {
		ll t = a[i];
		for(int j = 50;j >= 0;j --) {
			if(!(t>>j&1)) continue;
			if(b[j]) t ^= b[j];
			else {b[j] = t,ans ++;break;}
		}
	}

其中a是给定数列,b是所求线性基。

posted @ 2021-02-24 15:41  nao-nao  阅读(60)  评论(0编辑  收藏  举报