主席树
文章平均质量分 69
我不会额
这个作者很懒,什么都没留下…
展开
-
poj2104 K-th Number
题目:给你n个数,m个查询,每次查询形如(L,R,K),询问区间[L,R]区间内第K小的数思路:主席树代码:#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#in原创 2017-08-04 10:53:43 · 158 阅读 · 0 评论 -
主席树总结
主席树是一种离线的数据结构,一定要知道所有数的范围(假设数字范围是1到n)。通常要把所有数字读进来离散之后,再进行操作。主席树很耗费内存,因此在使用主席树以前,要判断会不会MLE,每一次修改操作所需要的空间是logn线段树的每个结点,保存的是这个区间含有的数字的个数。主席树的每个结点,也就是每颗线段树的大小和形态也是一样的,因此主席树之间可以相互进行加减运算主席树保存的是区间[L,原创 2017-08-04 09:49:18 · 239 阅读 · 0 评论 -
zoj2112 Dynamic Rankings 单点修改区间第k小
题目:给你N个数,M个操作,操作分两种,(Q,L,R,K)询问区间[L,R]第K小的数,(C,L,R)把第L个数改为R。N思路:主席树满足前缀和,因此可以用树状数组来维护。直接在原树上进行修改操作的空间复杂度是nlognlogn,会MLE。给树状数组单独开一棵主席树的空间复杂度是mlognlogn。因此要单独开一主席树,两者的和就是结果。#pragma comment(linker, "/原创 2017-08-04 13:24:20 · 433 阅读 · 0 评论 -
hdu4417 Super Mario
题目:给你n个数,m个询问,形如(L,R,H),让你输出区间[L,R]中小于等于H的数的数目思路:主席树,查询的时候看一下区间往左走还是#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#i原创 2017-08-04 13:54:03 · 356 阅读 · 0 评论 -
SPOJ COT Count on a tree 树上第k小
题目:给你一棵n个节点的树,每个节点有一个数,有m个询问,问a到b的路径上第k小的数思路:每一棵线段数都在它的父节点的基础上修改,这样就形成了相对于根的前缀和,设a,b的最近公共祖先是c,c的父节点是d,那么答案就是a+b-c-d#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#includ原创 2017-08-04 14:59:53 · 264 阅读 · 0 评论 -
hdu4348 To the moon 区间更新
题目:给你N个数,M个操作,操作有4种类型,C l r d 将区间[l,r]加上d,Q l r 询问区间[l,r]的和,H l r t询问时间t的区间[l,r]的和,B t回到时间t,初始时时间是0,每进行一次C操作,时间加1思路:主席树,注意lazy标记下传会产生大量的空间,内存不够,因此lazy直接放在节点上就好了,查询的时候加上去就行了#pragma comment(linker,原创 2017-08-04 16:31:29 · 247 阅读 · 0 评论 -
SPOJ DQUERY 区间内不同数的个数
题目:给你n个数,m个询问,问区间[L,R]内的不同数的个数代码:#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include原创 2017-08-04 17:02:53 · 302 阅读 · 0 评论