关于线性基的一丢丢理解
2018-03-16 20:45
113 查看
线性基
有趣的东西在某次考试时人人都切了一道题时才发现我没学过线性基。。。
是什么
我感觉它就是一个类似于向量基底的东西线性基中的元素任选几个异或起来是可以表达出原数组中的所有的值的,并且不能搞出其它的数
性质
线性基无论怎么选集合,只要是非空的,异或起来一定不是\(0\)线性基二进制最高位互不相同
线性基中元素互相异或,异或集合不变
线性基异或出原数组的异或方案唯一
满的线性基可以表示出所有正整数,准确来说是\(2\)的长度次方减\(1\)
求法
首先线性基中的一个元素\(a[i]\)的二进制最高位为\(1\),并且是第\(i\)位(以下所有都是二进制下讨论的)
不断原数组插入数\(x\)
从高往低枚举位数
如果这个数的第\(i\)位为\(1\),并且\(a[i]\)为空
这一位没有就补嘛,所以\(a[i]=x\)并且\(break\)
否则,这一位有,那就减去嘛
所以\(x \ xor=a[i]\)
一个数要么被插入,要么中途为\(0\)
合并
暴力一个一个丢到另一个中查询存在性
一个数是否能被线性基表示出来只要执行插入类似的操作,中途为\(0\)则是
查询最值
最小值就是最小的那个最大值:
从高位开始枚举,如果异或后变大,就异或
\(k\)小值
根据线性基二进制最高位互不相同的性质可以得到一个方法
我们要将线性基改造成每一位相互独立
如果\(i<j\),\(a[j]\)的第\(i\)位是\(1\),就将\(a[j]\)异或上\(a[i]\)
那么就只有\(a[i]\)的第\(i\)位为\(1\)
查询的时候将\(k\)二进制拆分,对于\(1\)的位,就异或上对应的线性基
最终得出的答案就是\(k\)小值
\(emmm...\)这我也不知道为什么
然后看一下这篇博客
相关文章推荐
- 关于线性基的学习与理解
- 关于线性基的学习与理解
- 关于线性基的学习与理解
- 关于线性基的一丢丢理解
- 关于线性基的一些理解
- fltk教程03:关于例子Text Editor的理解。
- 关于盒模型的理解
- 关于Android中RemoveView的错误理解
- 关于js与css加载的理解,理解网页head标签中的JS和CSS,哪种文件放在前面,哪种放在后面比较好
- 关于vxworks下vme中断的理解(universeII转接桥)
- [Python]关于os.walk的理解
- 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题
- 关于递归的理解
- --关于“石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子”的理解,看对否,
- 关于增广算法中反向边引入的理解
- 关于IoC(控制反转,依赖注入)的理解
- SQL SERVER 2005/2008 中关于架构的理解(一)
- 关于线性代数矩阵问题的一点理解
- GL-关于intercopany 和intracompany 的个人理解
- 关于js深入理解:json作为函数参数 类似于jQuery的post函数,具有url,data ,和回调函数