![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
主席树
whoammiiiiii
这个作者很懒,什么都没留下…
展开
-
SPOJ COT(主席树 + LCA)
题目链接主席树简单来说就是线段树+前缀和,每个节点的线段树存的是他以及之前所有与他相关节点的信息,现在询问u, v, 设u,v的lca是root, root的父节点是fa[root], 那么左节点的数量就是tVal[ lt[ t[u] ] ] + tVal[ lt[ t[v] ] ] - tVal[ lt[ t[ root ] ] ] - tVal[ lt[ t[fa[root] ] ] ]。一开始我减了两次root的值,这样root的点就减了两次,就没了,所以就少了root这个点的值,以后写lca的原创 2020-05-27 22:38:41 · 230 阅读 · 0 评论 -
SPOJ D-query(主席树入门题 求区间不同数的个数)
题目链接主席树入门题,感觉很久没碰数据结构了,回来再做一遍。这题也能用普通莫队做。主席树也就是持久化线段树,简单来说就是在每个位置都建一棵线段树,但如果重新建一棵完整的线段树肯定TLE,主席树就利用了更新一个点只跟一条链有关的性质每次除了新建一条链,其他的点都是拿上一个位置的直接用。这道题主席树底部的节点表示的是p位置上的数(离散化后)是不是一个不同的数,就更新操作来讲,如果前面位置lst也是这个数,那就把多建一条把跟lst相关的点都-1的链,然后再建一条跟当前位置p相关的点都+1的链,其余的点都是直原创 2020-05-19 23:32:00 · 140 阅读 · 0 评论 -
hdu 3333 (主席树在线求区间不同数的个数 or 线段树或者树状数组离线询问处理 )
题目链接时限 :3000ms题意:给你n个数,下面有m个询问,每次询问区间【l,r】之间不同数的和是多少。思路:1.主席树 500ms。和spoj DQUERY那道题求区间不同数的个数差不多,区别就是spoj那道题1到n每个点都要更新主席树那条链是+1-1的操作,这个是对那条链+num-num的操作。/*** Author : zzy* Date : 2020-04-06-15....原创 2020-04-07 03:34:52 · 206 阅读 · 0 评论