博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ5338】[TJOI2018]异或(主席树)
阅读量:5095 次
发布时间:2019-06-13

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

【BZOJ5338】[TJOI2018]异或(主席树)

题面

题解

很明显的是\(Trie\)树上暴力判断答案

因为要支持区间,用主席树的结构存\(Trie\)树就好了

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define ll long long#define RG register#define MAX 111111inline int read(){ RG int x=0,t=1;RG char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=-1,ch=getchar(); while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar(); return x*t;}struct Line{int v,next;}e[MAX<<1];int h[MAX],cnt=1;inline void Add(int u,int v){e[cnt]=(Line){v,h[u]};h[u]=cnt++;}int dfn[MAX],low[MAX],tim,dep[MAX],fa[MAX],size[MAX],hson[MAX],top[MAX],ln[MAX];int rt[MAX],n,Q,V[MAX];void dfs1(int u,int ff){ dep[u]=dep[ff]+1;size[u]=1;fa[u]=ff; for(int i=h[u];i;i=e[i].next) { int v=e[i].v;if(v==ff)continue; dfs1(v,u);size[u]+=size[v]; if(size[v]>size[hson[u]])hson[u]=v; }}void dfs2(int u,int tp){ top[u]=tp;dfn[u]=++tim;ln[tim]=u; if(hson[u])dfs2(hson[u],tp); for(int i=h[u];i;i=e[i].next) { int v=e[i].v;if(v==fa[u]||v==hson[u])continue; dfs2(v,v); } low[u]=tim;}struct Node{int son[2],v;}t[MAX*50];int tot;void Modify(int &x,int p,int w){ t[++tot]=t[x];x=tot;t[x].v++; if(w==-1)return; if(p&(1<
dep[v])swap(u,v); ret=max(ret,Query(rt[dfn[u]-1],rt[dfn[v]],x,30)); return ret;}int main(){ n=read();Q=read(); for(int i=1;i<=n;++i)V[i]=read(); for(int i=1;i

转载于:https://www.cnblogs.com/cjyyb/p/9199237.html

你可能感兴趣的文章
[Data Structure & Algorithm] 有向无环图的拓扑排序及关键路径
查看>>
git 常用命令
查看>>
cassandra vs mongo (1)存储引擎
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
Vue音乐项目笔记(三)
查看>>
遍历Map对象
查看>>
计算剪贴板里仿制的代码行数
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
#Leetcode# 209. Minimum Size Subarray Sum
查看>>
C#语言-04.OOP基础
查看>>
1)session总结
查看>>
PHP深浅拷贝
查看>>
SDN第四次作业
查看>>
ActiveMQ(4) ActiveMQ JDBC 持久化 Mysql 数据库
查看>>
DM8168 DVRRDK软件框架研究
查看>>
django迁移数据库错误
查看>>
epoll学习01
查看>>
yii 跳转页面
查看>>
闭包问题
查看>>
C#一个FTP操作封装类FTPHelper
查看>>