关于线性基的一丢丢理解
2018-03-16 20:45
176 查看
线性基
有趣的东西在某次考试时人人都切了一道题时才发现我没学过线性基。。。
是什么
我感觉它就是一个类似于向量基底的东西线性基中的元素任选几个异或起来是可以表达出原数组中的所有的值的,并且不能搞出其它的数
性质
线性基无论怎么选集合,只要是非空的,异或起来一定不是00线性基二进制最高位互不相同
线性基中元素互相异或,异或集合不变
线性基异或出原数组的异或方案唯一
满的线性基可以表示出所有正整数,准确来说是22的长度次方减11
求法
首先线性基中的一个元素a[i]a[i]的二进制最高位为11,并且是第ii位(以下所有都是二进制下讨论的)
不断原数组插入数xx
从高往低枚举位数
如果这个数的第ii位为11,并且a[i]a[i]为空
这一位没有就补嘛,所以a[i]=xa[i]=x并且breakbreak
否则,这一位有,那就减去嘛
所以x xor=a[i]x xor=a[i]
一个数要么被插入,要么中途为00
合并
暴力一个一个丢到另一个中查询存在性
一个数是否能被线性基表示出来只要执行插入类似的操作,中途为00则是
查询最值
最小值就是最小的那个最大值:
从高位开始枚举,如果异或后变大,就异或
kk小值
根据线性基二进制最高位互不相同的性质可以得到一个方法
我们要将线性基改造成每一位相互独立
如果i<ji<j,a[j]a[j]的第ii位是11,就将a[j]a[j]异或上a[i]a[i]
那么就只有a[i]a[i]的第ii位为11
查询的时候将kk二进制拆分,对于11的位,就异或上对应的线性基
最终得出的答案就是kk小值
emmm...emmm...这我也不知道为什么
然后看一下这篇博客
相关文章推荐
- 关于线性基的学习与理解
- 关于线性基的学习与理解
- 关于线性基的一些理解
- 关于线性基的学习与理解
- 关于线性基的一丢丢理解
- 关于OpenGL中几种纹理环绕模式的理解
- 关于重载理解
- 关于龙芯拿MIPS授权的一点理解
- 关于js中函数参数“按值传递”的理解
- 关于http协议session和cookie的理解
- 转载一个关于python web fraemwork 的理解
- 关于FBO(FrameBuffer Object)的一些理解
- 关于float浮动的通俗理解
- 关于多维数组的“不形象”理解
- callee,caller,call()以及apply()的用法理解以及从中引申出的关于作用域跟this的理解
- 关于Blocking IO, Non-Blocking IO 和 Asynchronous I/O的理解
- 关于图像处理的直观理解
- 关于js闭包的一些理解
- 关于编程语言的一些理解
- JAVA中关于set()和get()方法的理解及使用