线性基学习笔记

一、概念

线性基实际上就是维护了一个数组 \(p\),满足 \(p_i\) 在二进制下的最高位为第 \(i\) 位。

二、实现

现在我们有一个数组 \(a\),我们要构造他的线性基 \(p\)

每次插入 \(a_i\) 时,我们都从高位往低位遍历,用以寻找第一个空位插入它。当然,我们也不能直接把原数插入。为了方便查询是否存在该数,每次到达 \(a_i\) 最高位但是 \(p_j\) 已经有值时,\(a_i\gets a_i\oplus p_j\)

时间复杂度 \(O(n\log V)\)

void add(int x){for(int i=52;~i;i--)if(x&(1ll<<i)){if(p[i]) x^=p[i];else return p[i]=x,void();}
}

三、应用

  1. 查询当前插入的数值是否能够异或出 \(x\)
    实际上我们可以理解为插入 \(x\),能插得进去就说明不能,否则就是可以。
int check(int x){for(int i=52;~i;i--){if((x&(1ll<<i))==0) continue;if(p[i]) x^=p[i];else return 0;}return 1;
}
  1. 查询当前数能凑出的异或最大值 \(/\) 最小值。
    最小值就是从小往大枚举第一个 \(>0\)\(p_i\)(都为 \(0\) 的话最小值就是 \(0\)),最大值从大往小枚举,假如异或 \(p_i\)\(ans\) 更大,那么 \(ans\gets ans\oplus p_i\)
int maxn(){int ans=0;for(int i=52;~i;i--)ans=max(ans,ans^p[i]);return ans;
}int minn(){for(int i=0;i<53;i++)if(p[i]) return p[i];return 0;
}

当然,线性基也可以辅助其他算法或思想(如贪心)使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/852463.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线进制转换-浮点数16进制转换

在线进制转换工具;浮点数转16进制;分享一个在线进制转换工具,浮点数转十六进制得在线转换工具; 网址:https://www.bais.top/tools/hexconvert/ 浮点数转16进制在线转换网址 float转十六进制; 在线10进制转16进制;使用很方便,能够进行多种进制转换;

firemonkey主界面

firemonkey主界面firemonkey主界面 本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18606484

转载:【AI系统】动态图与静态图转换

从 TensorFlow、PyTorch,到 PaddlePaddle、MindSpore、MegEngine,主流的 AI 框架动静态图转换,经历了动静分离、动静结合到动静统一的发展过程。兼顾动态图易用性和静态图执行性能高效两方面优势,均具备动态图转静态图的功能,支持使用动态图编写代码,框架自动转换为静态图…

转载:【AI系统】数据并行

数据并行是一种广泛应用于分布式 AI 系统中的技术,旨在通过将数据集划分为多个子集并在不同计算节点上并行处理这些子集,以提高计算效率和速度。在大规模机器学习和深度学习训练过程中,数据并行可以显著加快模型训练速度,减少训练时间,提升模型性能。大部分的数据并行模型…

规模法则(Scaling Law)与参数效率的提高,

上一篇:《人工智能大语言模型起源篇(三),模型规模与参数效率》 规模法则与效率提高 如果你想了解更多关于提高变换器效率的各种技术,我推荐阅读2020年的《Efficient Transformers: A Survey》https://arxiv.org/abs/2009.06732论文,接着是2023年的《A Survey on Efficien…

HarmonyOS NEXT开发实战教程—淘宝搜索页

今天忙里偷闲,分享一个淘宝搜索页实现过程,先上效果图:界面部分比较简单,大体分为导航栏、历史搜索、猜你想搜和热搜榜几个部分,历史搜索采用用户首选项进行存储数据。 导航栏部分相关代码如下:Flex({direction:FlexDirection.Row,wrap:FlexWrap.NoWrap,alignItems:ItemA…

易优EyouCMS的“易优修改重置后台密码小工具”有哪些功能,如何使用?

易优EyouCMS的“易优修改重置后台密码小工具”是一个非常实用的工具,可以帮助您在忘记后台密码或其他登录问题时快速解决问题。以下是该工具的主要功能及其使用方法:后台密码重置:功能介绍:如果您忘记了后台管理员密码,可以使用此工具快速重置。 使用方法:下载 setpwd.ph…

如何在易优EyouCMS中手动创建缺失的数据表?

在使用易优EyouCMS时,如果遇到数据表缺失的情况,您可以通过以下步骤手动创建缺失的数据表:确认数据表缺失:登录到您的数据库管理工具(如phpMyAdmin),检查报错中提到的数据表是否存在于当前数据库中。例如,如果报错提示“数据表 ey_product_spec_value_handle 不存在”,…

WSL搭建深度强化学习环境

WSL搭建深度强化学习环境 https://zhuanlan.zhihu.com/p/683058297 假定你已经安装好wsl 安装miniconda https://docs.anaconda.com/miniconda/install/ curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash ~/Miniconda3-latest-Linux-x86_6…