线性基模板

线性基是一种处理异或和极值问题的数学工具,适用于ACM竞赛。它涉及概念、性质、代码实现,包括构造、插入、最大值、最小值、是否包含特定值、第k小值等操作。此外,还有线性基的合并、相交、区间查询的离线加速方法以及封装的单个线性基。
摘要由CSDN通过智能技术生成

线性基

概念

一组线性无关1的向量可以作为一组基底,形成一个线性向量空间,这个基底就被称为 线性基。将这个线性基的基底进行线性运算,可以表示向量空间内的所有向量,即所有向量可以拆成基底的线性组合2

特殊情况:一个线性空间的所有的法向量可以构成一个线性基


应用

处理有关 异或和的极值问题

原理:

  1. 一个值转化为二进制表示长为n位,那么这就可以看作一个n维向量,那么就可以将其拆解为n个基底向量的线性组合
  2. 由于异或运算的封闭性3,向量组 { a , b } \{a,b\} { a,b}的基底与 { a , a ⊕ b } \{a,a\oplus b\} { a,ab}相同
  3. 由于线性基要求线性无关1,所以当一个值 x x x要插入线性基 D D D时,插入的实际值为 x ⊕ ∑ d i ∈ D ⊕ d i x\oplus \sum_{d_i\in D}\oplus d_i xdiDdi
  4. 若存在 A ⊆ D A\subseteq D AD,使得 x ⊕ ∑ d i ∈ A ⊕ d i = 0 x\oplus\sum_{d_i\in A}\oplus d_i = 0 xdiAdi=0,则代表 x x x已经能被 D D D线性组合而成,无需插入 x x x。(线性无关要求)

性质

  1. 设线性基的异或集合中不存在0。
  2. 线性基的异或集合中每个元素的异或方案唯一,其实这个跟性质1是等价的。
  3. 线性基二进制最高位互不相同。
  4. 如果线性基是满的,它的异或集合为 [ 1 , 2 n − 1 ] [1,2^n−1] [1,2n1]
  5. 线性基中元素互相异或,异或集合不变。

代码实现

构造

直接遍历所有元素进行单元素插入


插入

// 线性基
/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值