裸题练习模板

#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
const int maxn=40010;
vector<ll>v[maxn][16];
int d[maxn],n,Q,fa[maxn][16],last[maxn],pre[maxn],other[maxn],t;
void add(int x,int y){++t;pre[t]=last[x];last[x]=t;other[t]=y;}
ll x,q[maxn];
vector<ll> uni(vector<ll> a,vector<ll> b){vector<ll>ans;int top=0,lena=a.size(),lenb=b.size();for(int i=0;i<lena;++i)q[++top]=a[i];for(int i=0;i<lenb;++i)q[++top]=b[i];int p=0;for(int j=60;j>=0;--j){bool flag=0;for(int i=p+1;i<=top;++i)if((q[i]>>j)&1){swap(q[i],q[++p]);flag=1;break;}if(!flag)continue;for(int i=1;i<=top;++i)if(i!=p){if((q[i]>>j)&1)q[i]^=q[p];}}for(int i=1;i<=p;++i)ans.push_back(q[i]);return ans;
}
void dfs(int x){for(int i=last[x];i;i=pre[i]){int v=other[i];if(v==fa[x][0])continue;d[v]=d[x]+1;fa[v][0]=x;dfs(v);}
}
int lca(int x,int y){if(d[x]<d[y])swap(x,y);for(int i=15;i>=0;--i)if(d[fa[x][i]]>=d[y])x=fa[x][i];if(x==y)return x;for(int i=15;i>=0;--i)if(fa[x][i]!=fa[y][i])x=fa[x][i],y=fa[y][i];return fa[x][0];
}
int jump(int x,int y){for(int i=15;i>=0;--i){if((1<<i)&y)x=fa[x][i];}return x;
}
vector<ll> qs(int x,int y){int k=log2(d[x]-d[y]+1);return uni(v[x][k],v[jump(x,d[x]-d[y]+1-(1<<k))][k]);
}
int main(){cin>>n>>Q;for(int i=1;i<=n;++i){scanf("%lld",&x);v[i][0].push_back(x);}int a,b,tmp;for(int i=1;i<n;++i){scanf("%d%d",&a,&b);add(a,b);add(b,a);}dfs(1);for(int j=1;j<=15;++j)for(int i=1;i<=n;++i){fa[i][j]=fa[fa[i][j-1]][j-1];v[i][j]=uni(v[i][j-1],v[fa[i][j-1]][j-1]);}while(Q--){scanf("%d%d",&a,&b);tmp=lca(a,b);vector<ll>ans=uni(qs(a,tmp),qs(b,tmp));ll res=0,siz=ans.size();for(int i=0;i<siz;++i)if((res^ans[i])>res)res^=ans[i];printf("%lld\n",res);}return 0;
} 

转载于:https://www.cnblogs.com/dibaotianxing/p/8695952.html

bzoj4568(合并线性基+倍增)相关推荐

  1. BZOJ4568: [Scoi2016]幸运数字(线性基 倍增)

    题意 题目链接 Sol 线性基是可以合并的 倍增维护一下 然后就做完了?? 喵喵喵? // luogu-judger-enable-o2 #include<bits/stdc++.h> # ...

  2. 2017 ICPC西安区域赛 A - XOR ,线段树合并线性基

    题目链接:A - XOR 题意;给个数组,每次询问一个区间你可以挑任意个数的数字异或和 然后在或上k的最大值 题解:线性基不知道的先看这个,一个线性基可以log的求最大值把对应去区间的线性基求出来然后 ...

  3. 【bzoj4568】【SCOI2016】【幸运数字】【树上倍增+线性基】

    Description A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个 幸运数字,以纪念碑的形式矗立在这座城市的正中心,作为城市的象征. ...

  4. P3292-[SCOI2016]幸运数字【线性基,LCA,倍增】

    正题 题目链接:https://www.luogu.com.cn/problem/P3292 题目大意 nnn个点的一棵树,每个点都点权.每次询问一条路径,选择若干个点的异或和最大. 解题思路 路径上 ...

  5. 洛谷P3292 [SCOI2016]幸运数字(倍增+线性基)

    传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 第一眼:这不会是个倍增LCA暴力合并线性基吧-- 打了一发--A了? 所以这真的是个暴力倍增LCA合并线性基么-- ps:据某大佬说其实可以离线之后 ...

  6. 【HDU3949 + BZOJ2115 + CF724G】【异或线性基例题】| 倍增 | 第k小异或和 | DFS处理环 |【CGWR】| N

    三道关于异或线性基的有趣的题目 [1] HDU 3949. XOR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3276 ...

  7. 线性基+前缀线性基学习笔记

    学习于这个博客 首先,线性基是一个集合,对于任何一个序列一定有至少一个线性基,取线性基中的某些数异或起来一定可以得到原序列中的任何一个数. 线性基三大性质: 1.原序列中的任何一个数都可以由线性基里面 ...

  8. 【CF1100F】 Ivan and Burgers (分治+线性基)

    description 戳我看题目(づ ̄3 ̄)づ╭❤- solution 异或和最大 --关联线性基 线性基: 原序列的每一个数都能由线性基里若干个数异或得到 线性基里若干个数的异或结果不可能为0 如 ...

  9. P哥的桶(线段树+线性基)

    https://www.luogu.org/problem/P4839 题目: 有两个操作 1 a b  在a的位置添加b数值  (注意一个位置可以有多个值) 2 a b : 在 a到b的范围任取任意 ...

最新文章

  1. linux搭建windows无盘系统,PXE+HTTP 无盘安装linux系统
  2. 程序员修神之路--用NOSql给高并发系统加速
  3. SQL Server 2014新功能 -- 内存中OLTP(In-Memory OLTP)
  4. vue中ast生成render
  5. mongodb和mysql空间占用_MongoDB的存储结构及对空间使用率的影响
  6. 在Win10中通过Google Chrome运行安卓应用
  7. php. 调试工具.trace
  8. python 2.7版本解决TypeError: 'encoding' is an invalid keyword argument for this function
  9. win10文件同步到服务器失败,手把手为你解决win10系统同步时间同步失败的思路...
  10. mxnet-lst文件
  11. git log 数据统计 与 git blame 代码作者查询
  12. 天津城建大学计算机学院官网,天津城建大学计算机与信息工程学院研究生导师简介-杨振舰...
  13. SpringBoot整合Log4j2以及配置详解
  14. unity 求出物体所在相机的横截面 解决调整 field Of View后场景物体和UI不匹配
  15. 【爱普搜】突发!上海地库一特斯拉Model 3发生爆炸,整车只剩车架
  16. github开源社区代码学习目录
  17. Cisco全国考场列表
  18. 无法删除或修改win7系统注册表怎么办
  19. 输电线路巡检报告模板
  20. PROTEUS最新版本下载CSDN_剪映4k版本下载-剪映4k版本60帧画质最新版v4.4.4

热门文章

  1. [转]MySQL innodb buffer pool
  2. bitmapshader 的使用
  3. sublime Text 2 配置以及 Python环境搭建
  4. windows下python打开中文路径文件出现问题
  5. Visual Studio 2012/2010/2008 远程调试
  6. haiyang457 原创软件安装包代表作集合电子书
  7. 使用Spring MVC统一异常处理实战
  8. 线程执行者(十一)执行者分离任务的启动和结果的处理
  9. iOS开发之protocol和delegate
  10. 翻转单词顺序与左旋转字符串