平衡树
文章平均质量分 77
pbihao
这个作者很懒,什么都没留下…
展开
-
【BZOJ 1150】[CTSC2007]数据备份Backup treap+贪心
贪心的话就懒得说了,反正一堆题解,只是看大家都用的优先队列然后突然想起自己好像很久没有写treap了就写了个treap,查询的话树上二分就好啦。。。。。然后一个插入一个删除#include#include#include#define LL long long#define maxn 100020 #include#define inf 0x3f3f3f3fusing names原创 2017-01-06 20:37:33 · 237 阅读 · 0 评论 -
【BZOJ 1112】Poi2008砖块Klo treap
把每一个的高度看做是直线上的一个点,那么问题就是求一个点到其他所有点的距离最短。可以发现,位于中位数的点到左右点的距离和最短,证明的话,很简单就不说了(试着把中位数上的点左右移动就好了)那么问题就变成求中位数了,treap就搞定了。#include#include#include#include#define LL long longusing namespace std;原创 2017-02-15 22:08:49 · 220 阅读 · 0 评论 -
【BZOJ 3166】[Heoi2013]Alo 可持久化trie树+set
看到异或最大值容易想到trie树,至于区间异或最大值的话,可持久化一下就可以搞了。至于满足次大值那个。。。倒序排序权值,然后把它们的坐标插入set中,每一次lower_bound后找前继的前继和后驱就好了#include#include#include#include#include#define maxn 50010#define inf 0x3fffffffusing原创 2017-01-19 21:22:22 · 208 阅读 · 0 评论 -
【BZOJ 3786】星系探索 splay维护dfs序
调起来真艰辛。。。还好出题人给了数据,良心:点击打开链接其实没有第三个操作的一个普通的树剖就能够全部维护了,但是由于第三个操作的存在,又由于每一次都会整体移动一颗子树,所以我们用splay来维护dfs序。做法过程:1.dfs得到dfs序:每一个节点在进栈和出栈的时候都会加入到dfs序当中最后得到一个长度为2*n的dfs序,进栈时候的节点为i出栈为i+n。2.建树:进栈节点的权值原创 2017-02-08 21:53:40 · 438 阅读 · 0 评论 -
【BZOJ 2300】 [HAOI2011]防线修建 平衡树维护凸包
离线然后把所有的操作倒过来,这样就像星球大战一样,删点变成加点,动态用平衡树维护凸包就好了。#include#include#include#include#include#define maxn 200021using namespace std;struct P{ double x,y; P(double a=0,double b=0):x(a),y(b){} bool原创 2017-02-16 19:33:28 · 304 阅读 · 0 评论 -
【BZOJ 1251】序列终结者 splay
基本模板,只是。。。。。一开始写的指针版本的,写到一半维护空指针快把我恶心吐了,有删了写了一个数组版本的。。。还有,为什么你们的那么快啊。。。。#include#include#include#define ls(u) ch[u][0]#define rs(u) ch[u][1]#define maxn 100020#define inf 0x7fffffffusing name原创 2017-01-14 08:58:54 · 225 阅读 · 0 评论 -
【codevs 1743】反转卡片 splay的应用
【codevs 1743】反转卡片 splay的应用原创 2016-07-27 10:39:56 · 292 阅读 · 0 评论 -
【codevs 3303】翻转区间 splay
又是一道splay题 ,写splay的速度的确快了不少 ,再接再厉;1.int d= u==f->ch[1]; push_down(f); push_down(u);这里好像前后都无所谓,好悬=玄2,居然忘了在 findk的时候下方标记我也是心累,蜜汁re就是结果,下要细心啊#include#include#include#include#define ls u->ch原创 2016-07-27 12:08:10 · 317 阅读 · 0 评论 -
【bzoj 1588】 [HNOI2002]营业额统计 双向链表
【bzoj 1588】 [HNOI2002]营业额统计 双向链表原创 2016-10-16 17:56:14 · 1410 阅读 · 0 评论 -
【noip 2012】开车旅行 倍增+双端链表
【noip 2012】开车旅行原创 2016-10-20 17:54:57 · 611 阅读 · 0 评论 -
【BZOJ 1208】 [HNOI2004]宠物收养所 splay模板(指针)+set
这一道题,出题就为了强行掩饰这是一道裸的平衡树硬生生装题面。裸的平衡树,找前缀后缀就可以了,但是数据太水了,我的手撕splay居然和stl的set速度只是快了一点,我不服set版:#include#include#include#define Mod 1000000#includeusing namespace std;int n,pos,ans;sets;原创 2016-11-03 08:35:35 · 313 阅读 · 0 评论 -
【BZOJ 1503】[NOI2004]郁闷的出纳员 treap
做完这一道题以后我基本就郁闷了,BZOJ上不能用ctime一直re,删了就好了,没什么好说的裸的treap拿来练版#include#include#include#includeusing namespace std;int n,Min; struct Tree{ int r,size,x,times; Tree* ch[2]; Tree(int a=0,int b=0,Tr原创 2016-12-07 20:57:49 · 244 阅读 · 0 评论 -
【BZOJ 1691】[Usaco2007 Dec]挑剔的美食家 treap+贪心
首先对于所有的奶牛和草堆按照鲜嫩度排序,这样倒着枚举奶牛,动态插入所有大于等于当前美味度的草堆,这样在treap中维护的所有的节点都是合法的,然后就可以贪心的去找后继了。贪心的证明比较简单就不说了BZOJ上不能使用ctime函数库,但是不初始化种子的话特别容易挂,所以随便相乘取一下质数的mod就好了#include#include#include#include#define LL原创 2016-12-12 18:07:17 · 293 阅读 · 0 评论 -
【BZOJ 1861】[Zjoi2006]Book 书架 splay
建立一个splay维护书架的信息,开一个数组标记每一个编号对应的节点的指针就好了,没什么好说的#include#include#includeusing namespace std;int n,m;struct Tree{ int x,size; Tree* ch[2],*f; Tree(int a=0,Tree* e=NULL){ x=a,size=1,ch[0]=NUL原创 2016-12-15 22:05:41 · 190 阅读 · 0 评论 -
【BZOJ 1014】[JSOI2008]火星人prefix hash+splay+二分
一开始以为会是后缀数组之类的什么鬼东西,结果最后想了半天没想出来,结果想到hash秒出答案,所以有的时候应该考虑换一下思维方式。因为题目要求查询和修改操作,维护一个splay,每个节点对应这个位置的字符和这棵子树的hash值,就能完成插入修改操作了,每一个询问的时候再二分最长前缀hash cheak就好了然后。。。有一个函数忘了写return值结果BZOJ一直说我T,我改了很多常数还是T,原创 2016-12-20 10:29:57 · 192 阅读 · 0 评论 -
【BZOJ 2733】[HNOI2012]永无乡 启发式合并treap
大白上在介绍treap的时候有一道相似的例题,不过难一点的是他是拆桥,所以类似于银河星球大战里面的离线处理,倒着来,先拆开再合并。思路嘛,很简单,启发式合并treap。#include#include#include#includeusing namespace std;int n,m,fa[200020];int find(int x){return fa[x]==x?x:f原创 2016-12-20 17:13:31 · 270 阅读 · 0 评论 -
【BZOJ 3729】Gty的游戏 splay+dfs序+阶梯NIM
其实就是几个东西搞在一起1.允许加入一个节点:splay维护dfs序即可2.每次只能向上移动不超过L个石子:对于一般的NIM游戏并没有这个限制,但是其实只要画一画就可以发现假设我们有一堆石子数为n的石子,每次最多取走L个,那么对于每一堆的sg函数的值就是n%(L+1)3.每一次只能向上移到父亲处:阶梯NIM游戏,我在之前一篇博客讲到过,只用异或上奇数的阶梯即可有了上面一些东西就可以原创 2017-03-28 09:03:46 · 300 阅读 · 0 评论