首页 > 其他分享 >浅谈线性基

浅谈线性基

时间:2023-07-01 11:12:43浏览次数:27  
标签:基中 匹配 浅谈 ll 异或 ans 线性

前言

线性基是一种处理异或问题的利器,拥有优秀的时间复杂度

基本性质

概念

定义:给定数集 \(S\) ,以异或运算张成的数集与 \(S\) 相同的极大线性无关集,称为原数集的一个线性基。

通俗地说,线性基是一个数的集合。每个序列都拥有至少一个线性基。取线性基中若干个数异或起来可以得到原序列中的任何一个数。

基本性质

1、线性基中的数最高位互不相同

2、线性基中的数互相异或可以得到原序列中的任何一个数

3、线性基中的数没法异或出0

4、线性基是满足性质2的情况下的最小集合,且大小唯一。

5、线性基子集的异或和具有唯一性

证明咕咕咕

基本操作

插入

设数组 \(p\) 表示序列 \({a_n}\) 的线性基,待插入数为 \(x\),下标从 \(0\) 开始。

我们聚焦性质1,可以发现,如果想让线性基中的数最高位互不相同,就要用贪心的思想,在能匹配进去的时候匹配进去。所以我们将 \(x\) 转为二进制,从它的高位开始,如果当前位为 \(1\),并且线性基 \(p\) 的第 \(i\) 位上没有数,那就赋成当前值 \(x\)。

如果发现这时候第 \(i\) 位上有数,那么就让 \(x\) 异或上 \(p_i\) 后继续按最高位匹配。

为什么这样做是可行的?

不妨假设 \(x\) 在匹配时经过了 \(p\) 中的 \(q\) 个位置,分别为 \(b_1\) 至 \(b_q\) 那么我们将这些位置上的 \(p\) 异或起来,就能得到原来的 \(x\) ,因为我们在匹配过程中,相当于每次失配的时候都把当前的 \(x\) 拆分成了 \(p_i\) 和 \(p_i \; xor \;x\) ,之后我们再用后半部分去匹配,因此我们把所有经过的位置的线性基中的数给异或起来,我们就得到了原数。

bool insert(ll x){
    for(int i=60;i>=0;i--){
        if(x>>i&1){
            if(!p[i]){ p[i]=x;return true;}
            x^=p[i];
        }
    }
    return false;//判断能否插入成功
}

查最大值

因为线性基中每个数的最高位互不相同,而且异或运算里每一位都是独立的,所以我们要想求异或后的全局最大值,我们只需要从高位向低位依次尝试加入后能否是当前答案变大即可。

ll found_max(){
    ll ans=0;
    for(int i=60;i>=0;i--) ans=max(ans,ans^p[i]);
    return ans;
}

标签:基中,匹配,浅谈,ll,异或,ans,线性
From: https://www.cnblogs.com/sky-light/p/17516138.html

相关文章

  • 【视频】R语言LDA线性判别、QDA二次判别分析分类葡萄酒品质数据
    全文链接:https://tecdat.cn/?p=33031原文出处:拓端数据部落公众号分析师:DongleiNiu判别分析(Discriminantanalysis)是一种统计分析方法,旨在通过将一组对象(例如观察数据)分类到已知类别的组中,来发现不同组之间的差异。什么是判别分析判别分析有两种主要形式:线性判别分析(LDA)和......
  • simulink中的非线性模块
    0、为了验证simulink中的noline模块relay,搭建电路如下:1、relay模块,有的称为继电模块,该模块主要有以下四个参数设计:开启点就是让继电器模块开启的数值,这里设置为0.5关闭点就是让继电器模块关闭的数值,测住设置为-0.5打开时的输出为设置为1关闭时的输出为设置为02、输入模块......
  • 2023-06-30《计算方法》- 陈丽娟 - 线性方程组的迭代解法.md
    2023-06-30《计算方法》-陈丽娟-线性方程组的迭代解法Matlab计算方法JacobiGauss-SeidelSORSSOR定常迭代法所谓迭代法实际上是求解一个关于映射的不动点问题:然后利用构造一个迭代格式这里表示T的一个复合函数,其可能随迭代次数而改变,最终目标即是得到.下面我们给出收敛......
  • 浅谈一下c#多线程编程
    概念线程:线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。同步:一定要等任务执行完了,得到结果,才执行下一个任务。如果程序执行耗时操作时会阻塞线程。应用场景UI与I/O:UI发出I/O操作,I/O操作是费时任务计算密集型工作(CPU-boun......
  • 浅谈PCBA板机械加工分类
    印制板的机械加工主要应用于印制板坯料的下料(俗称开料)、孔加工和外形加工,是印制板整个工艺程序中的重要步骤。由于印制板的孔和外形加工质量都直接影响印制板的机械装配性能和电气连接性能,尤其是印制板上各种用途的孔(元件安装孔、导通孔、安装孔、定位孔、检测孔等)加工质量还会影......
  • 1.线性表
    【知识框架】1.线性表的定义线性表(List):零个或多个数据元素的有限序列。若将线性表记为(a1,…,ai-1,ai,ai+1,…,an),则表中ai-1领先于ai,引领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当i=1,2,…,n-1时,ai有且仅有一个直接后继,当i=2,…,n-1,n时,ai中有且仅有一个......
  • 浅谈装配式建筑的抗震性能到底好不好?
    前言根据国家标准《装配式混凝土建筑技术标准》GB/T51231-2016、《装配式混凝土结构技术规程》JGJ1-2014的相关内容,目前我国的装配式建筑结构的抗震性能基本等同于现浇结构的抗震性能。而实际上,由于预制构件的标准化生产,其实际的混凝土性能指标是优于现场浇筑的混凝土的,因此,在所有......
  • 浅谈SpringSecurity与CVE-2023-22602
    一、前言  前段时间Apache报告了CVE-2023-22602,由于1.11.0及之前版本的Shiro只兼容Spring的ant-style路径匹配模式(patternmatching),且2.6及之后版本的SpringBoot将SpringMVC处理请求的路径匹配模式从AntPathMatcher更改为了PathPatternParser,当1.11.0及之前版......
  • 浅谈单调队列优化DP
    对于形如\[f_i=\max(f_{L≤j≤R}+w_i)\]的状态转移方程,也就是转移来自之前某个定长区间的最值,我们可以使用单调队列来维护区间最值,从而优化时间复杂度。烽火传递我们看到题目可以想到用\(f_i\)表示考虑到\(i\)这个烽火台,点第\(i\)个的合法方案中的最小代价那么可以想到......
  • 浅谈无线测温系统在高压开关柜中的应用
    罗轩志安科瑞电气股份有限公司上海嘉定201801摘要:高压开关柜是配电系统中重要的组成部分,其主要作用是控制电荷、分配电能和开断电流等,对维持系统的稳定性有一定的保障作用。将无线测温技术应用于高压开关柜,可以实现对其进行实时的动态监测,有助于相关工作人员根据高压开关柜的温度......