自己yy了找前驱和后继,学了学怎么删除。。。(反正就是练模板)

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 80005
#define lc(x) ch[x][0]
#define rc(x) ch[x][1]
#define inf 0x3f3f3f3f
using namespace std;
int n,k[N*],size,ch[N*][],root,cnt,fa[N];
void rotate(int p)
{
int q=fa[p],y=fa[q],x=(ch[q][]==p);
ch[q][x]=ch[p][x^];fa[ch[q][x]]=q;
ch[p][x^]=q;fa[q]=p;
fa[p]=y;
if(y)
{
if(ch[y][]==q)ch[y][]=p;
else ch[y][]=p;
}
}
void splay(int x)
{
for(int y;y=fa[x];rotate(x))
{
if(fa[y])
{
if((y==lc(fa[y])&&x==lc(y))||(y==rc(fa[y])&&x==rc(y)))rotate(y);
else rotate(x);
}
}
root=x;
}
void insert(int x,int v)
{
while(ch[x][k[x]<v])x=ch[x][k[x]<v];
ch[x][k[x]<v]=++cnt;
fa[cnt]=x;k[cnt]=v;splay(cnt);
}
int now1,now2;
int pre(int x,int v)
{
int tmp=-inf;
while(ch[x][k[x]<v])
{
if(k[x]<=v)if(k[x]>tmp)tmp=k[x],now1=x;
x=ch[x][k[x]<v];
}if(k[x]<=v)if(k[x]>tmp)tmp=k[x],now1=x;
return tmp;
}
int suc(int x,int v)
{
int tmp=inf;
while(ch[x][k[x]<v])
{
if(k[x]>=v)if(k[x]<tmp)tmp=k[x],now2=x;
x=ch[x][k[x]<v];
}if(k[x]>=v)if(k[x]<tmp)tmp=k[x],now2=x;
return tmp;
}
void del(int x)
{
splay(x);
if(!ch[x][])fa[ch[x][]]=,root=ch[x][];
else if(!ch[x][])fa[ch[x][]]=,root=ch[x][];
else
{
fa[ch[x][]]=;
int tmp=ch[x][];while(ch[tmp][])tmp=ch[tmp][];
splay(tmp);
ch[tmp][]=ch[x][];fa[ch[x][]]=tmp;
}
return ;
}
int main()
{
scanf("%d",&n);
cnt=;root=;
k[]=inf;int ans=;
insert(root,-inf);
size=;int shu=;
for(int i=;i<=n;i++)
{
int t1,t2;scanf("%d%d",&t1,&t2);
if(!t1)
{
if(!shu||size==)
{
insert(root,t2);
shu=;size++;
}
else
{
size--;
int qq=pre(root,t2),ww=suc(root,t2);
if(abs(qq-t2)<=abs(ww-t2))
{
ans+=abs(qq-t2);del(now1);
}
else
{
ans+=ww-t2;del(now2);
}
}
}
else
{
if(shu||size==)
{
insert(root,t2);
shu=;size++;
}
else
{
size--;
int qq=pre(root,t2),ww=suc(root,t2);
if(abs(qq-t2)<=abs(ww-t2))
{
ans+=abs(qq-t2);del(now1);
}
else
{
ans+=ww-t2;del(now2);
}
}
}
ans%=;
}
printf("%d\n",ans);
return ;
}

bzoj 1208 splay模板题2的更多相关文章

  1. bzoj 1588 splay模板题

    用晚自习学了一下splay模板,没想象中那么难,主要是左旋和右旋可以简化到一个函数里边,减少代码长度... #include<iostream> #include<cstdio> ...

  2. bzoj 3224 splay模板题4

    再刷水题我就废了... #include<iostream> #include<cstdio> #include<algorithm> #include<cs ...

  3. bzoj 3223 splay模板题3

    水题...貌似理解splay怎么维护数列了... 每个点维护一个size,它的位置就是它的size,区间翻转的话可以打标记,find的时候push_down,交换左右子树. #include<i ...

  4. BZOJ 1208 [HNOI2004]宠物收养所 | SPlay模板题

    题目: 洛谷也能评 题解: 记录一下当前树维护是宠物还是人,用Splay维护插入和删除. 对于任何一次询问操作都求一下value的前驱和后继(这里前驱和后继是可以和value相等的),比较哪个差值绝对 ...

  5. 【BZOJ 3196】二逼平衡树 线段树套splay 模板题

    我写的是线段树套splay,网上很多人写的都是套treap,然而本蒟蒻并不会treap 奉上sth神犇的模板: //bzoj3196 二逼平衡树,支持修改某个点的值,查询区间第k小值,查询区间某个值排 ...

  6. 【BZOJ 3188】【Coci 2011】Upit Splay模板题

    转啊转终于转出来了,然而我的模板跟陈竞潇学长的模板一模一样,还是太弱啊,第一次用指针. #include<cstdio> #include<cstring> #include& ...

  7. BZOJ 1588 平衡树 模板题

    Treap: //By SiriusRen #include <cstdio> #include <algorithm> using namespace std; int si ...

  8. BZOJ 3224 平衡树模板题

    Treap: //By SiriusRen #include <cstdio> #include <algorithm> using namespace std; int n, ...

  9. PKU-3580 SuperMemo(Splay模板题)

    SuperMemo 题目链接 Your friend, Jackson is invited to a TV show called SuperMemo in which the participan ...

随机推荐

  1. Nginx 使用IP限制访问来源

    在 server {... 下, 或者在 location xxx {... 下, 都可以添加如下的IP访问限制 allow 10.57.22.172; allow ; allow ; allow ; ...

  2. Centos6 修改max user processes limits

    ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何 ...

  3. [转]nginx+fastcgi+c/c++搭建高性能Web框架

    FROM : http://blog.csdn.net/marising/article/details/3932938 1.Nginx 1.1.安装 Nginx 的中文维基 http://wiki. ...

  4. Android开篇(转)

    转自:http://gityuan.com/android/ 一.简述 Android系统非常庞大.错中复杂,其底层是采用Linux作为基底,上层采用包含虚拟机的Java层以及Native层,通过系统 ...

  5. httpserver

    改了下 # -*- coding:utf-8 -*- from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler HOST = &quo ...

  6. node基础06:回调函数

    1.Node异步编程 Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,No ...

  7. Spring TestContext测试框架搭建

    同样是测试,JUnit和Spring TestContext相比,Spring TestContext优势如下: 1.Spring TestContext可以手动设置测试事务回滚,不破坏数据现场 2. ...

  8. Java 的世界,我不懂:奇葩的 json 序列化

    先上张图,代表我心中的十万头草泥马: 写这么长的代码,头回见数组和单个实体共用同一个 json 节点的! 恐怕只有 java 社区的大牛B 才能做出这等事.. 由 Apache 发布: http:// ...

  9. 使用spring boot和thrift、zookeeper建立微服务

    Spring cloud适应于云端服务,也适用于企业信息化SOA建设.spring boot也是restful微服务开发的利器.但对于内网服务,即服务与服务之间的调用,spring并没有去刻意封装,也 ...

  10. js基础知识温习:构造函数与原型

    构造函数 构造函数主要用于初始化新对象.按照惯例,构造函数名第一个字母都要大写. 构造函数有别于其它函数在于它使用new操作符来调用生成一个实例对象.换句话说,如果一个函数使用new操作符来调用,则将 ...