关于线性基的一丢丢理解

线性基

有趣的东西
在某次考试时人人都切了一道题时才发现我没学过线性基。。。

是什么

我感觉它就是一个类似于向量基底的东西
线性基中的元素任选几个异或起来是可以表达出原数组中的所有的值的,并且不能搞出其它的数

性质

  • 线性基无论怎么选集合,只要是非空的,异或起来一定不是\(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...\)这我也不知道为什么

然后看一下这篇博客

原文地址:https://www.cnblogs.com/cjoieryl/p/8585071.html

时间: 2024-07-30 08:21:26

关于线性基的一丢丢理解的相关文章

「专题总结」线性基

为什么要把毫无关联的线性基和群论放在一个专题里呢..? 因为它们都很毒瘤 线性基本身还是比较简单的,用于处理一些数子集异或和的集合有哪些. 然而它的考察方法总是很神奇... 题目难度大致升序,但是没有前置知识关系: 元素: $Description:$ 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而使用了很多矿石,却在炼制

51nod 1577 异或凑数(线性基)

分析:如果能知道区间线性基,问题就解决了,所以一开始有个naive的想法,搞个线性基线段树,然而复杂度(32*nlogn),果断T... 正解是预处理后缀线性基,并且每个基中的每一个分量位置尽量靠前,然后把k丢到左端点对应的线性基里跑,如果k最后不为0或者需要异或的位置超过了r,答案就是NO. 这样的后缀线性基可以从后面开始处理,插入x时,如果某一位已经有数且在数组中的位置在x之后,把x放入线性基替换掉这个数,然后用这个数接着跑. 1 #include<iostream> 2 #include

BZOJ - 2115 独立回路 线性基

题意:给定一个图集\((V,E)\),求路径\(1...n\)的最大异或和,其中重复经过的部分也会重复异或 所求既任意一条\(1...n\)的路径的异或和,再异或上任意独立回路的组合的异或和(仔细想想,异或的过程是不是不断抵消并选取更优异或路径的过程?) 因此dfs返向边把环的异或值弄出来丢入线性基中贪心选取即可 顺便转载一下菊苣的独立回路小姿势(电路课似乎讲过但我摸鱼了XD) 首先有个结论:一个无向连通图G中有且仅有M-N+1个独立回路. 独立回路是指任意一个都不能由其他回路构成. 引用一段数

题解 外星千足虫(线性基+高斯消元)

题解 luogu外星千足虫(线性基+高斯消元) 题目 luogu题目传送门 题解想法 首先需要知道这是个异或方程对吧 然后既然看到位运算,又有这么多,就可以考虑线性基(做题技巧),那我们就丢进去 接下来看一看线性基,哇,性质美妙 它不就是Gauss消元里面想要的上三角矩阵吗 所以说: 如果能拼成线性基,那么枚举到哪里完成了,就输出位置(first_ans) 如果拼不成,那就解不出(毋庸置疑) 那真是美妙啊... 所以怎么消元呢?这可是个异或方程,我们要解出来啊 枚举整个线性基的g[i] 如果g[

[TJOI2008] 彩灯 (线性基)

[TJOI2008] 彩灯 题目描述 Peter女朋友的生日快到了,他亲自设计了一组彩灯,想给女朋友一个惊喜.已知一组彩灯是由一排N个独立的灯泡构成的,并且有M个开关控制它们.从数学的角度看,这一排彩灯的任何一个彩灯只有亮与不亮两个状态,所以共有\(2^N\)个样式.由于技术上的问题,Peter设计的每个开关控制的彩灯没有什么规律,当一个开关被按下的时候,它会把所有它控制的彩灯改变状态(即亮变成不亮,不亮变成亮).假如告诉你他设计的每个开关所控制的彩灯范围,你能否帮他计算出这些彩灯有多少种样式可

#41 最短路(分治+线性基)

考虑异或最短路应该怎么求.那么这是个WC原题,dfs一遍找到所有有用的环丢进线性基即可,因为每一个环的权值都是可以取到且不对其他部分产生影响的. 现在给了一棵树,不妨就把他看做原图的dfs树.每增加一条边就是增加了一个环.算出权值后,现在问题变为求一个数和任选一段区间里的数的最大异或值. 比较暴力的做法是直接建线段树,每次logn*log2v取出区间线性基.这样可以拿50分. 线性基的合并实在太慢了.考虑能不能离线搞.每次取出跨过区间中点的询问,处理中点左右的后缀前缀线性基,询问时将两边线性基合

Codeforces 938G 线段树分治 线性基 可撤销并查集

Codeforces 938G Shortest Path Queries 一张连通图,三种操作 1.给x和y之间加上边权为d的边,保证不会产生重边 2.删除x和y之间的边,保证此边之前存在 3.询问x到y的路径异或最小值 保证图在任意时刻连通 首先连通图路径异或相当于从x到y的任意一条路径再异或上若干个环得到的,只要在dfs过程中把非树边成的环丢到线性基里就好了,其他环一定可以通过这些环异或组合出来 有加边删边操作怎么做呢?线段树时间分治!注意到不能保证在线段树的任意一个节点图是连通的,需要用

CF1163E Magical Permutation【线性基,构造】

题目描述:输入一个大小为\(n\)的正整数集合\(S\),求最大的\(x\),使得能构造一个\(0\)到\(2^x-1\)的排列\(p\),满足\(p_i\oplus p_{i+1}\in S\) 数据范围:\(n,S_i\le 2^{18}\) 什么?NTF在很多年前就把这东西给切了? 首先要把\(S\)缩成一个大小为\(x\)的线性无关组,而且每个数\(<2^x\),这样就可以构造出\(p\)了.(之后再说) 直接丢进线性基里就可以了吗?不行,应该是把\(<2^x\)的数全部加进去之后,看

线性基 学习笔记

ps:做CF的时候碰到了一个线性基的概念,然后在网上学习了一下,发现相关的资料很少,所以打算来写一个我个人的理解. 线性代数中 有极大线性无关组和空间的基的概念.  线性基的性质与此类似. 首先来看一个问题: 给出N个数,要从中选出一个最大的子集,使得子集中的任意个元素异或值不为0. 这个和极大线性无关组有些类似.异或可以看出是模2域下的加法运算,如果把一个数转化为二进制,对应成一个由01构成的向量, 所有这些向量就构成了一个线性空间. 原问题就转化为求这个向量组的极大线性无关组,把这样一个极大