异或方程组matlab代码,异或方程组 线性基

线性基linear base

for(int i=1;i<=n;i++)

for(int j=64;j>=1;j--)

{

if(a[i]>>(j-1)&1)

{

if(!lb[j]){lb[j]=a[i];break;}

else a[i]^=lb[j];

}

}

用这个算法可以求出a数组的线性基

线性基 就是原数组所能xor出的一切数这个线性基都能xor出来,不多不少

正确性显然

见莫涛PPT例六解法三

线性基的个数不超过log2V个,且对于每一位i,有且仅有一个线性基在这一位上是1(见构造过程)

注意到这个算法是在线的,可以随时插入一个新数

如果要支持在线的增加一个数/删除一个数/查询当前所有数的线性基 二进制分组(sillycross的数据结构pdf)或者线段树可以做到一次操作O(64*lgn)

------------与XOR本身关系并不大的东西

一个无向图上的一条路径(u---...---v)的xor和,总可以被u到v的任意一条路径xor一些环的xor值得到

------------------------------------

有了这些东西之后基本上就能做题了

-----------------------------------

是看到最后一道题 才突然发现自己这一块完全不懂的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值