线性基学习笔记

我废话怎么这么多wwwwwwwwwww

rebuild

思想就是使满足线性基的条件下,使每一个二进制位只在一个位置上为 1。

可以用高斯消元直接处理出,也可以处理出任意一组线性基后从后往前扫一遍,如果 aij 位上为 1,则 aiajai。此时如果用一个二进制数表示取线性基中的哪些数异或起来,记作 bS,则 b 单调上升。

queryKth(去重)

将一组线性基 rebuild 后的性质很好,所以结果即为 bk

queryRank

二分+queryKth 是 O(log2n) 的。但是可以考虑类似倍增的东西,rebuild 后从后往前扫一遍,异或之后值不超过 x 就异或上并加上排名贡献。O(logn)

merge

直接将 b 中每个往 a 做一次 insert。

Lemma 1

n 个数组成大小为 s 的线性基,组合出 2s 个不同的数,每个出现 2ns 次。

Proof:考虑在不在线性基中的数中选择一个子集异或和为 x,则在线性基中一定有一种方法组合出异或和 x ,否则子集中应有一些数会插入线性基。并且只有一种方法,否则不满足线性基条件。则得到为 0 的异或和后,再使用线性基内的数组合一下就可以得到这 2s 个数中的任意一个。

prefix

线性基其实是很灵活的,对于一段区间的查询,考虑对于每个前缀的线性基,怎么样才能在保证拼出每一个数的情况下,使用到的数所在的位置在序列中尽可能后,这可以通过一个贪心解决。

感觉这是可以举一反三的,但是我还没想出来。

queryMin

想想就会系列。先把 x 对全集取个反,然后放做一遍 queryMax,最后再取个反,就是异或两次。

posted @   yinhee  阅读(31)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示