主席树
文章平均质量分 72
wJs9528-1
这个作者很懒,什么都没留下…
展开
-
POJ 2104 K-th Number (主席树 静态区间第K大)
题意:给你n个不同的数字,m次询问,每次询问l->r这个区间内第k大的树是多少 分析:刚学主席树试着写了一发,值得注意的是主席树是多颗线段树,并且每颗线段树存的都是插入第i个数字的状态, 树中结点存储的是每个区间插入第i个数字之后总共插入了多少个数字,每一次的插入过程都是logn的建树。 根据主席树的这个特点,只需要找到插入l-1这个数字时的线段树状态和r时的状态,根据两者区间插入数字的差值原创 2016-05-12 22:30:21 · 472 阅读 · 0 评论 -
SPOJ DQUERY (主席树模板)
题意: 给出一个序列,询问区间内有多少个不同的数 这题卡分块莫队,写了一下主席树,已加入模板 主席树大概是这么回事,每个结点记录前缀线段树,当然这里的线段树结点的申请是动态的,每次最多申请logn个,对于询问来说就只需要询问前缀r线段树中l到n区间内不同数的个数了 #include #include #include #include #include using nam原创 2016-08-08 15:32:43 · 1579 阅读 · 0 评论 -
SPOJ COT Count on a tree (树上k大 主席树模板)
题意: 给出一棵树和树上结点的权值,询问u->v路径上结点第k小权值首先考虑一维序列上第k小是主席树如何处理的,主席树在每个结点存储的是当前结点及前面所有结点权值的线段树,当需要询问k小时,只需要取出左端点记录的线段树版本和右端点记录的线段树版本,然后二分去查找k小即可 现在考虑一棵树上如何操作,如果是一条链,那么和一位序列处理的方法一样,那么此时每个结点存储的就是当点结点和父链所有结点的信息,原创 2016-08-10 10:49:09 · 348 阅读 · 0 评论 -
CodeForces 707D Persistent Bookcase (操作建树DFS|主席树+主席树)
题意: 给出一个n*m的书柜,有四种操作 1 i j — Place a book at position j at shelf i if there is no book at it. 在i行j列放一本书,如果已有书则不放 2 i j — Remove the book from position j at shelf i if there is a boo原创 2016-08-22 14:02:35 · 705 阅读 · 0 评论 -
BZOJ 3295: [Cqoi2011]动态逆序对 (树状数组套主席树)
题面: 对于序列A,它的逆序对数定义为满足i<ji<j,且Ai>AjAi>Aj的数对(i,j)(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。对于已经存在的序列进行删除不是很好操作,不妨先倒过来想,假设我们将这些数空缺,然后倒序加入序列中是否可行,很明显可以,那么剩下的问题就是对于当前加入的书产生了多少个逆序对,对于新添入原创 2016-08-22 16:44:33 · 941 阅读 · 0 评论 -
HDU 5919 Sequence II(主席树)
题意:给出一个长度为n的序列,m次询问,每次询问取出【l,r】区间内所有第一次出现的数字下标,输出这些下标的中位数,强制在线分析:由于需要强制在线处理,并且没有修改,所以考虑用主席树,统计第一次出现的数字下标,直接倒着扫一遍数组建树,每一次询问,统计区间个数,二分查找第k个数,复杂度mlog(n)mlog(n)#include<cstring> #include<string> #include<i原创 2016-10-07 10:06:30 · 372 阅读 · 0 评论