传送门 就是普通平衡树,可以拿来练非旋treap" role="presentation" style="position: relative;">treaptreap的板子. 贴个代码: #include<bits/stdc++.h> #define N 300005 using namespace std; typedef pair<int,int> res; int n; inline int read(){ int a…
题面 传送门 题解 板子,没啥好说的 //minamoto #include<bits/stdc++.h> #define R register #define inline __inline__ __attribute__((always_inline)) #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i) #define go(…
#107. 维护全序集 题目描述 这是一道模板题,其数据比「普通平衡树」更强. 如未特别说明,以下所有数据均为整数. 维护一个多重集 S SS ,初始为空,有以下几种操作: 把 x xx 加入 S SS 删除 S SS 中的一个 x xx,保证删除的 x xx 一定存在 求 S SS 中第 k kk 小 求 S SS 中有多少个元素小于 x xx 求 S SS 中小于 x xx 的最大数 求 S SS 中大于 x xx 的最小数 操作共 n nn 次. 输入格式 第一行一个整数 n nn,表示共…
时间:2018.07.24地点:北京国家会议中心…
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MB Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是一项相当复杂的工作.由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,…
传送门 平衡树好题. 我仍然是用的fhqtreap,感觉速度还行. 维护也比线段树splay什么的写起来简单. %%%非旋treap大法好. 代码: #include<bits/stdc++.h> #define N 500005 #define inf 0x3f3f3f3f using namespace std; queue<int>garbage; typedef pair<int,int> res; int n,m,rt=0,cnt=0,a[N],son[N][…
描述 初始有一个空集,依次插入N个数Ai.有M次询问Bj,表示询问第Bj个数加入集合后的排名为j的数是多少 输入 第一行是两个整数N,M 接下来一行有N个整数,Ai 接下来一行有M个整数Bj,保证数据合法 输出 M行,回答每个询问 样例输入 7 4 9 7 2 8 14 1 8 1 2 6 6 样例输出 9 9 7 8 提示 [说明] 第一次询问,当前集合{9},1th=9 第二次询问,当前集合{9,7}的第2=9 第三次询问,当前集合{9,7,2,8,14,1}的第3=7 第四次询问,当前集合…
传送门 经典的平衡树问题,之前已经用splay写过一次了,今天我突发奇想,写了一发非旋treap的版本,发现挺好写的(虽然跑不过splay). 代码: #include<bits/stdc++.h> #define N 100005 using namespace std; typedef pair<int,int> res; int rt=0,n,m,cnt=0,son[N][2],siz[N],val[N],rd[N],rev[N]; inline int read(){ in…
非旋  $treap$ (FHQ treap)的简单入门 前置技能 建议在掌握普通 treap 以及 左偏堆(也就是可并堆)食用本blog 原理 以随机数维护平衡,使树高期望为logn级别, FHQ 不依靠旋转,只有两个核心操作merge(合并)和split(拆分) 所谓随机数维护平衡就是给每个节点一个随机值 key (下文中没有加随机的就代表是真实权值), 然后整棵树中 key 值要满足小(大)根堆的性质(也就是heap), 同时也要满足平衡树(tree)的性质(也就是每个节点左子树内节点真实…
简介 二叉搜索树, 可以维护一个集合/序列, 同时维护节点的 \(size\), 因此可以支持 insert(v), delete(v), kth(p,k), rank(v)等操作. 另外, prev(v) == kth(rt,rank(v)-1); next(v) == kth(rt,rank(v)+1). 平衡树通过各种方法保证二叉搜索树的平衡, 从而达到 \(O(\log n)\) 的均摊复杂度. Splay Splay 不仅可以实现一般平衡树的操作, 还可以实现序列的翻转/旋转等操作.…