专栏文章
线性基
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqi9gh7
- 此快照首次捕获于
- 2025/12/04 05:14 3 个月前
- 此快照最后确认于
- 2025/12/04 05:14 3 个月前
线性基能用logV的空间存储某些数异或能得到的所有数
p[i]:二进制表示,第一个1在第i个位置的数字
构造:
CPPvoid insert(long long x){
for(int i=63;i>=0;i--){
if((x>>i)&1){
if(!p[i]) p[i]=x;
x^=p[i];
}
}
}
查询x和这些数能异或出的最大值
CPPlong long query(long long x){
long long ans=x;
for(int i=63;i>=0;i--) ans=max(ans,ans^v[i]);
return ans;
}
线性基合并时,把其中一个的每个数插入另一个即可
如果是维护树上信息,倍增不需要一段段合并,因为线性基信息合并重复也没事(参考RMQ),只要合并两个就能解决一条链
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...