线性基
这几天很困而且肚子吃坏了导致这一章学的奇慢,此事在我的犇犇中亦有记载。
线性基就是向量基底。
oi里头喜欢用异或线性基,就是把原本基底表示的求和改成异或。
所以可以拿来解决异或问题。
称集合
对于线性基的构造:参考高中数学的基底
就能转成正交基。
异或线性基是一个道理的,相当于在一个
所以有一种贪心构造。
int p[32];
inline void insert(int x){
for(int i=31;i>=0;i--){
if((x>>i)&1){
if(!p[i]){
p[i]=x;
return ;
}
else x^=p[i];
}
}
}
对于当前插入的
看一下这个线性基能干啥。
根据上面的构造方式,把线性基从高往低扫一下贪心取最大就能获得原数组的最大异或和,传参一个询问值就能解决原数组的子集和询问值的最大异或和。
又根据定义,线性基的元素个数最小,所以无论怎么插生成的线性基元素个数都一样。就可以解决一类贪心问题。
线性基可以求第
显然线性基能唯一地表示出
不妨现在已经构造出了一种随机赋边权的方案,使得对于每个会使图不连通的询问边集 这tm谁能想到
然后看怎么构造,考虑逐步扩展问题规模,对于只有一个点只要出边异或和为 0 即可。对于两个点的情况发现可以靠和异或一样效果的容斥抵消成刚才的结论。对于
发现可以线段树分治每个元素存在时的贡献,然后没了。
这种题就是说路径是非简单路径。仔细想一下环可以拿来优化答案,链可以拿来跑答案,把每个环的贡献存到线性基里就可以了。
梦想封印那道题离线拆边改加边然后拿set维护一下线性基,每次加边就重构,是
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律