平衡树
Sirius_Ren
▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇自己刮~~~
展开
-
POJ 1442 Treap模板
// by SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int cnt=0,jy,a[30500],n,m,root=-1; struct node{ int left,right,count_left,count_right,key,priority; }t原创 2016-07-09 22:30:57 · 504 阅读 · 0 评论 -
BZOJ 1507 splay
写完维修数列 这不是水题嘛233333//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N=5000050; int n,pos=1,ch[N][2],fa[N],size[N],root,xx,cnt; char op[15],ins[N],原创 2017-03-04 21:01:14 · 306 阅读 · 0 评论 -
BZOJ 1500 splay终结版...
GSS系列有一丝丝像… 只不过那个是线段树 这个是splay 翻转 插入 删除啥的就是普通的splay 合在一起了而已//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct Tree{ int v,rev,sum,lmax,rmax,ma原创 2017-03-03 00:37:20 · 343 阅读 · 0 评论 -
BZOJ 3323 splay维护序列
就第三个操作比较新颖 转化成 在l前插一个点 把r和r+1合并//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn=100005,mod=20130426; typedef long long ll; struct Tree{原创 2017-03-02 23:59:52 · 523 阅读 · 0 评论 -
BZOJ1901 ZOJ2112 线段树+treap (线段树套线段树)
BZOJ1901://By SiriusRen #include <cstdio> #include <algorithm> using namespace std; #define N 600050 char op[3]; int n,m,t,root[N],size,a[N],tmp,L,R,xx; struct Treap{int ch[2],v,cnt,rnd,sz;}tr[N]; void原创 2016-12-05 18:51:29 · 476 阅读 · 0 评论 -
BZOJ 3223 Splay区间翻转
思路: 区间翻转的裸题 终于tm理解splay了……//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 155555 int n,m,root,size[N],ch[N][2],fa[N],rev[N],v[N]; void push_up(原创 2017-01-03 10:29:53 · 555 阅读 · 0 评论 -
BZOJ 1251 Splay维护序列
思路: splay维护序列的裸题 啊woc调了一天 感谢yzy大佬的模板……//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 55555 #define inf 0x3f3f3f3f int n,m,root,cnt,size[N],ch原创 2017-01-03 10:05:39 · 356 阅读 · 0 评论 -
BZOJ 1588 平衡树 模板题
//By SiriusRen #include <cstdio> #include <algorithm> using namespace std; int size,n,xx,root,ans,tmp; struct Treap{int ch[2],v,cnt,rnd,sz;}tr[500050]; void Upd(int k){tr[k].sz=tr[tr[k].ch[0]].sz+tr[tr原创 2017-01-02 09:24:26 · 377 阅读 · 0 评论 -
BZOJ 3224 平衡树模板题
Treap://By SiriusRen #include <cstdio> #include <algorithm> using namespace std; int n,op,xx,ans,size,root; struct Treap{int ch[2],v,cnt,rnd,sz;}tr[300000]; void Upd(int k){tr[k].sz=tr[k].cnt+tr[tr[k].原创 2016-12-04 21:36:36 · 829 阅读 · 0 评论 -
BZOJ 3544 treap (set)
我只是想找个treap的练习题……每回找到lower_bound 就好啦//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define int long long int n,m,a[200500],sum[200500],jy,ans,root,size;原创 2016-12-09 16:34:20 · 611 阅读 · 0 评论 -
BZOJ 1503 treap
思路: treap (算是基本操作吧…..) 加减的操作数很少 就暴力好啦 每回判断一下最小的数是不是比M小 如果是 就删,继续判断搞定。//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n,M,xx,size,root,jy,ans; ch原创 2016-12-09 16:25:07 · 374 阅读 · 0 评论 -
BZOJ 3196 线段树套平衡树
(代码无比丑陋)//By SiriusRen #include <cstdio> #include <algorithm> using namespace std; int n,m,L,R,xx,tx,t,root[3000050],size,ans,op,inf=0x3fffffff,a[500050]; struct Treap{int ch[2],v,cnt,sz,rnd;}tr[300005原创 2016-12-05 00:34:00 · 850 阅读 · 1 评论 -
BZOJ 1146 二分+链剖+线段树+treap
思路: 恶心的数据结构题……首先 我们 链剖 把树 变成序列 再 套一个 区间 第K大就好了…… 复杂度(n*log^4n)//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 88888 #define inf 1000000原创 2016-12-12 10:46:49 · 631 阅读 · 0 评论 -
BZOJ 3262 cdq分治 OR 树套树
注意判断 三个条件都一样的…… CDQ分治 其实就是看左半部分对右半部分的贡献 (其实并不是很难理解 只是想不到……)CDQ分治://By SiriusRen #include <cstdio> #include <algorithm> using namespace std; #define N 888888 int n,k,tree[N],tot,ans[N]; struct No原创 2016-12-11 15:43:39 · 715 阅读 · 0 评论 -
BZOJ 3729 splay维护DFS序+博弈论
思路: 这像是 阶梯Nim之类的东西 我们 直接把sg函数 设成mod(L+1)的 一棵子树 向下的奇数层上的石子xor起来 就是答案 有加点和改值的操作 就splay维护一下//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N=1原创 2017-02-26 16:10:56 · 678 阅读 · 0 评论