平衡树
gjghfd
这个作者很懒,什么都没留下…
展开
-
bzoj2209 [ JSOI2011 ] -- splay
将左括号记为1,右括号记为-1,则一个合法的括号序列满足所有的前缀和非负。 用splay维护。 代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define N 100010 7 inline char nc(){ 8 static char buf[10原创 2017-05-26 16:44:42 · 218 阅读 · 0 评论 -
bzoj1251 -- splay
splay模板题。 用splay维护序列,令splay的中序遍历为这个序列,则在处理[l,r]时,先将l-1旋转到根,再将r+1旋转到根的右子树,那么根的右子树的左子树就是[l,r]了。 代码: #include #include #include using namespace std; #define N 50010 #define INF 2147483647 bool b[N]; in原创 2017-05-26 16:42:53 · 156 阅读 · 0 评论 -
bzoj1503 [ NOI2004 ] --treap
这道题和一般的题目不同,A和S操作要修改所有节点。所以定义基准d,每个节点的工资是它的值+d,这样就能完成所有操作。 I k:将值为k-d的节点插入treap A k:将d加上k S k:将d减去k,并将所有值小于min-d的节点删除。 F k:因为treap在插入时就是有序的,所以直接查找。 这里要注意: 在实际编码中,为了减少出错的可能性,一般用一个真实的指针null代替空指针NU原创 2017-05-26 16:40:20 · 231 阅读 · 0 评论 -
[ 线段树套treap ] [ TJOI2016&&HEOI2016 ] BZOJ4552
题解#include<bits/stdc++.h> using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++; } inline void原创 2017-12-13 13:29:04 · 302 阅读 · 0 评论