首页 > 其他分享 >【线性基小记】

【线性基小记】

时间:2022-11-14 17:58:21浏览次数:48  
标签:return 插入 int 集合 异或 线性 小记

定义

对一个数的集合\(S\),其线性基就是由最少的数构成的集合\(B\),满足在\(S\)中任选一些数异或后的值,都可以在\(B\)中选一些数异或使得两个值相等。

性质

  1. \(B\)中任意元素异或起来结果不为\(0\)
    ps:即要求\(B\)中元素线性无关,否则一定可以删掉至少一个数,使得\(B\)能表示的数集不变。
  2. 为了方便,我们钦定\(B\)集合中任意两个数的最高位不同(若存在相同,则可以用其中一个异或上另一个,然后往跟低位去插入)

插入

利用性质2,我们设\(b_i\)为\(B\)中最高位为第\(i\)位的数,若没有,则为\(0\)。

初始\(S\)为空,\(B\)也为空,假设当前\(S\)新加入一个数\(x\),考虑\(B\)集合的变化:

从最高位开始,若\(x\)这一位上为\(0\),则不进行任何操作。否则,如果\(b_i\)有值,就令\(x\)异或上\(b_i\);如果\(b_i=0\),就令\(b_i=x\)
复杂度\(O(\log V)\)

点击查看代码
bool insert(int x)
{
	for(int i=60;~i;--i)
	{
		if(x>>i&1) {
			if(b[i]) x^=b[i];
			else {
				b[i]=x;return 1;//成功插入
			}
		}
	}
	return 0;//插入失败
}

推论

设\(S\)的值域上界为\(2^n-1\),则\(B\)最多有\(n\)个数

证明:考虑插入的时候记录的\(b_i\),当每一位上\(b_i\)都有值时,任意一个元素都不可能再插入到线性基中,也就是说\(n\)就是线性基大小的上限。

合并线性基

合并两个线性基\(S_1,S_2\),只需把一个集合中的元素全部插入另一个集合中,复杂度\(O(\log^2 V)\)

经典模型

  1. 求一个集合中能够异或出的最大值
    从高位开始贪心,如果异或上\(b_i\),能使得结果更大,则异或。
点击查看代码
int get()
{
	int x=0;
	for(int i=50;~i;--i)
	{
		if((x^b[i])>x) x^=b[i];
	}
	return x;
}
  1. 求一个集合中能够异或出的第k小值

标签:return,插入,int,集合,异或,线性,小记
From: https://www.cnblogs.com/glq-Blog/p/16889793.html

相关文章

  • R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归|附代码数据
     全文链接:http://tecdat.cn/?p=11617在这篇文章中,我将对多元线性回归使用block的Gibbs采样,得出block的Gibbs采样所需的条件后验分布。然后,对采样器进行编码,并使用模......
  • ACM预备队-week3(线性表)
    1.寄存柜题目链接:P3613【深基15.例2】寄包柜-洛谷|计算机科学教育新生态(luogu.com.cn)二维map学到了  stl大法好1#include<bits/stdc++.h>2usingname......
  • 线性回归
     虚线是SD线(也就是线性相关系数那个线)实线是回归线,上有三个x标记,表示对于各自身高,其平均体重是多少。相对于每个X,对应的y的平均数。x每增加1个SD,平均而言,y平均增加r......
  • 基于时空RBF-NN进行非线性系统识别(Matlab代码实现)
    ......
  • Linux纵深防护小记-系统的基本加固要求
    (目录)一、密码策略的强化authconfig--passminlen=12--passminclass=4--passmaxrepeat=2--update密码策略的修改将保存在/etc/security/pwquality.conf中。二、用......
  • matplotlib绘图接口和绘制线性图
    在深入使用​​matplotlib​​​之前你需要知道几个​​matplotlib​​​技巧,这些技巧能帮助你更快速掌握​​matplotlib​​。导入matplotlib和​​numpy​​​,​​pandas......
  • 6.数据分析(1) --描述性统计量和线性回归(2)
    昨天分享了描述性统计量相关内容,今天把昨天剩下的部分写完,昨天文章链接:​​6.数据分析(1)--描述性统计量和线性回归(1)​​前言:在针对非物理信号分析的时候,例如用户数、用......
  • 11.12小记
    上午补了昨晚做的E,F感觉E以后遇到也只能才结论,证明估计一辈子都搞不出来。F是个并查集+启发式合并,灰常好写拿了个最短解。学了一波bitset,以后暴力又可以节省时间里。......
  • 2022/11/07-13 训练小记
    2022/11/07-13训练小记P7961[NOIP2021]数列显然是一个\(dp\),首先考虑状态应如何设计。看到\(n\)的限制,首先可以想到记一维\(i\)表示当前已被确定的\(a\)序列......
  • 函数递归+线性表
    今日学习了函数的递归,递归指的是函数重复引用自身,为了避免栈溢出,应设置合适的限制条件。下面将今天做的练习进行整理:练习1:接收一个整型值,按照顺序打印他的每一位#include<st......