BZOJ 2588 主席树
思路: 
主席树 
做完BZOJ 3123 觉得这是道水啊…… 
然后狂RE 狂MLE 
要来数据  
忘把deep[1]设成1了…………………………. 
啊wocccccccccccccccc
//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 200050
#define M 5000000
typedef long long ll;
int n,m,xx,yy,zz,a[N],inf,cnt,fa[N/2][21],tree[M],lson[M],rson[M];
int first[N],next[N],v[N],root[N],tot,ans,jy,deep[N];
void add(int x,int y){v[tot]=y,next[tot]=first[x],first[x]=tot++;}
void insert(int x,int &y,int l,int r,int wei){
    if(!y)y=++cnt;tree[y]=tree[x]+1;if(l==r)return;
    int mid=((ll)l+r)/2;
    if(mid<wei)lson[y]=lson[x],insert(rson[x],rson[y],mid+1,r,wei);
    else rson[y]=rson[x],insert(lson[x],lson[y],l,mid,wei);
}
void dfs(int x){
    for(int i=1;i<=20;i++)fa[x][i]=fa[fa[x][i-1]][i-1];
    insert(root[fa[x][0]],root[x],1,inf,a[x]);
    for(int i=first[x];~i;i=next[i])if(v[i]!=fa[x][0]){
        deep[v[i]]=deep[x]+1;
        fa[v[i]][0]=x,dfs(v[i]);
    }
}
int lca(int x,int y){
    if(deep[x]<deep[y])swap(x,y);
    for(int i=20;~i;i--)if(deep[fa[x][i]]>=deep[y])x=fa[x][i];
    if(x==y)return x;
    for(int i=20;~i;i--)if(fa[x][i]!=fa[y][i])x=fa[x][i],y=fa[y][i];
    return fa[x][0];
}
int query(int x,int y,int lca,int flca,int l,int r,int wei){
    if(l==r)return l;
    int mid=((ll)l+r)/2,temp=tree[lson[x]]+tree[lson[y]]-tree[lson[lca]]-tree[lson[flca]];
    if(temp<wei)return query(rson[x],rson[y],rson[lca],rson[flca],mid+1,r,wei-temp);
    else return query(lson[x],lson[y],lson[lca],lson[flca],l,mid,wei);
}
signed main(){
    memset(first,-1,sizeof(first)),scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]),inf=max(inf,a[i]);
    for(int i=1;i<n;i++)scanf("%d%d",&xx,&yy),add(xx,yy),add(yy,xx);
    deep[1]=1,dfs(1);
    for(int i=1;i<=m;i++){
        scanf("%d%d%d",&xx,&yy,&zz),xx^=ans;jy=lca(xx,yy);
        printf("%d",ans=query(root[xx],root[yy],root[jy],root[fa[jy][0]],1,inf,zz));
        if(i!=m)putchar('\n');
    }
}BZOJ 2588 主席树的更多相关文章
- bzoj 1901 主席树+树状数组
		修改+查询第k小值 单纯主席树修改会打乱所有,所以再套一个树状数组维护前缀和使得修改,查询都是log 对了,bzoj上不需要读入组数,蜜汁re.. #include<cstdio> #in ... 
- bzoj 1818  主席树
		思路:主席树搞一搞. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #de ... 
- BZOJ 4771 主席树+倍增+set
		思路: 因为有深度的限制,并且我们是在线段树上维护权值,所以我们把点按照dep排序,然后一个一个修改...主席树的下标就是dfs序,子树的查询就是区间查询... 但是发现这样怎么去维护LCA呢...因 ... 
- BZOJ 3674/BZOJ 3673 主席树
		思路: 主席树维护可持久化数组 剩下的就是普通的并查集了- //By SiriusRen #include <cstdio> #include <cstring> #inclu ... 
- BZOJ 3123 主席树 启发式合并
		思路: 主席树 搞树上的k大 x+y-lca(x,y)-fa(lca(x,y)) 按照size小树往大树上插 启发式合并 n*log^2n的 搞定~ //By SiriusRen #include & ... 
- BZOJ 4448 主席树+树链剖分(在线)
		为什么题解都是离线的-- (抄都没法抄) 搞一棵主席树 1 操作 新树上的当前节点设成1 2 操作 查max(i-xx-1,0)那棵树上这条路径上有多少个点是1 让你找经过了多少个点 查的时候用dee ... 
- BZOJ 3524主席树裸题 (雾)
		思路: 按权值建一棵主席树 (但是这好像不是正解 空间复杂度是不对的--.) //By SiriusRen #include <cstdio> #include <cstring&g ... 
- BZOJ 3524 - 主席树
		传送门 题目分析 标准主席树,按照位置插入每个数,对于询问l, r, 在l-1,r两树上按照线段树搜索次数大于(r - l + 1) / 2的数. code #include<bits/stdc ... 
- BZOJ 3932 - 主席树
		传送门 题目分析 在只打会主席树模板的情况下做了这道题,也算是深有体会. 首先任务可以差分:一个任务是(s, e, p), 则在s处+1, 在e+1处-1,符合前缀.但是我们要查询指定时间的前k任务之 ... 
随机推荐
- 谷歌浏览器 —— 快捷键(vimium:像使用 vim 一样操作当前页面)
			Chrome 键盘快捷键 拷贝当前页面内的某链接: 首先输入 y(进入 yank 模式),输入 f,为当前页面内的全部超链接编号,然后输入待拷贝的链接编号,即可将该链接复制到粘贴板: 1. 使用 vi ... 
- c++面向对象程序设计 谭浩强 第一章答案
			c++面向对象程序设计 谭浩强 答案 第一章 目录: c++面向对象程序设计 谭浩强 答案 第一章 c++面向对象程序设计 谭浩强 答案 第二章 c++面向对象程序设计 谭浩强 答案 第三章 c++面 ... 
- centos 部署 .net core runtime 环境
			除非在linux下开发才安装SDK,一般生产环境只需安装 runtime 1.添加 yum 源 sudo rpm --import https://packages.microsoft.com/key ... 
- CodeFirst模式,容易引发数据迁移问题(不建议使用)
			code first 模式 .模型类需要数据契约绑定[DataContract] .模型参数需要[DataMember]-----(可以序列化) .(同上)也可以在类的上面增加[Table(" ... 
- vue2.0中关于active-class
			一.首先,active-class是什么, active-class是vue-router模块的router-link组件中的属性,用来做选中样式的切换: 相关可查阅文档:https://router ... 
- easyUI datagrid表头的合并
			图列: js代码 function initConfigTable(param){ $("#mulConfigureTableBox").empty(); $("#mul ... 
- 使用面向对象技术创建高级 Web 应用程序
			作者: 出处: 使用面向对象技术创建高级 Web 应用程序 来源:开源中国社区 作者:oschina 最近,我面试了一位具有5年Web应用开发经验的软件开发人员.她有4年半的JavaScript编程经 ... 
- HDU 1023 Train Problem II( 大数卡特兰 )
			链接:传送门 题意:裸卡特兰数,但是必须用大数做 balabala:上交高精度模板题,增加一下熟悉度 /************************************************ ... 
- java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
			最近在使用java PiO导入导出Excle在windos本机上运行没有问题: 但是!!问题来了!放到Linux服务器上部署后出现异常 java.lang.NoClassDefFoundError: ... 
- 【Codeforces Round #482 (Div. 2) B】Treasure Hunt
			[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 我们考虑每个字符串中出现最多的字母出现的次数cnt[3] 对于这3个cnt的值. 如果cnt+n<=s[i].size 那么显 ... 
