博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[2018.12.28]BZOJ4568 [Scoi2016]幸运数字
阅读量:6527 次
发布时间:2019-06-24

本文共 1720 字,大约阅读时间需要 5 分钟。

这种异或和问题一看就是线性基对吧。。。

要维护的是树上两点之间的路径,所以考虑倍增。

发现可以记\(p_{i,j}\)\(i\)\(i\)\(2^j\)次父亲(不含)的点权构出的线性基。

于是我们需要合并两个线性基,记这个操作为\(Merge(p1,p2)\)

\(p_{i,j}=Merge(p_{i,j-1},P_{f_{i,j-1},j-1})\)

如何实现?

其实很简单,枚举其中一个线性基中的元素,按照之前构建线性基的方法加入另一个线性基即可。

然后...做完了?!

时间复杂度\(O(qlog^2a_ilogn)\),而且读入/输出的数字规模较大,消耗的时间较多,所以你需要读优。

可能还需要氧气

code:

#include
using namespace std;int n,q,u,v,vis[20010],f[20010][20],dep[20010],pr[20],sz;long long g[20010],p[20010][20][65],P[65],ans;vector
e[20010];void scan(long long &x){ char c=getchar(); x=0; while('0'>c||c>'9')c=getchar(); while('0'<=c&&c<='9')x=x*10+c-'0',c=getchar();}void scan(int &x){ char c=getchar(); x=0; while('0'>c||c>'9')c=getchar(); while('0'<=c&&c<='9')x=x*10+c-'0',c=getchar();}void print(long long x){ sz=0; while(x)pr[++sz]=x%10,x/=10; while(sz)putchar(pr[sz--]+'0');}void Push(long long x,long long *pp){ if(!x)return; for(int i=60;i>=0;i--){ if(x&(1ll<
=0;i--)mp[i]=p1[i]; for(int i=60;i>=0;i--)Push(p2[i],mp);}void Merge2(long long *p1,long long *mp){ for(int i=60;i>=0;i--)Push(p1[i],mp);}void dfs(int x){ vis[x]=1; for(int i=0;i
=0;i--)if(dep[x]-(1<
=dep[y])Merge2(p[x][i],P),x=f[x][i]; for(int i=15;i>=0;i--)if(f[x][i]!=f[y][i])Merge2(p[x][i],P),x=f[x][i],Merge2(p[y][i],P),y=f[y][i]; if(x!=y)Push(g[x],P),Push(g[y],P),Push(g[f[x][0]],P); else Push(g[x],P);}int main(){ scan(n),scan(q); for(int i=1;i<=n;i++)scan(g[i]),Push(g[i],p[i][0]); for(int i=1;i
=0;i--)(ans^P[i])>ans?ans^=P[i]:0; print(ans),putchar('\n'); } return 0;}

转载于:https://www.cnblogs.com/xryjr233/p/BZOJ4568.html

你可能感兴趣的文章
rhel-server-7.2-x86_64无法联网(VMware环境)
查看>>
Nginx配置中的log_format用法梳理(设置详细的日志格式)
查看>>
Atitit 软件工程概览attilax总结
查看>>
优化LibreOffice如此简单
查看>>
【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】
查看>>
秒杀系统设计方案
查看>>
3D印花芭蕾舞鞋为舞者科学地保护双脚
查看>>
冲浪科技获Ventech China数百万美元天使轮融资,发力自动驾驶行业
查看>>
通过ActionTrail监控AccessKey的使用
查看>>
从 JavaScript 到 TypeScript
查看>>
一个mysql复制中断的案例
查看>>
【最佳实践】OSS开源工具ossutil-大文件断点续传
查看>>
Linux常用的服务器构建
查看>>
深入了解 Weex
查看>>
Android第三方开源FloatingActionButton(com.getbase.floatingactionbutton)【1】
查看>>
【75位联合作者Nature重磅】AI药神:机器学习模型有望提前五年预测白血病!
查看>>
精通SpringBoot——第二篇:视图解析器,静态资源和区域配置
查看>>
JavaScript基础(六)面向对象
查看>>
总结几点Quartz的经验
查看>>
企业的最佳选择?开放式混合云大行其道
查看>>