fhq treap

开俩哨兵节点,然后插入、删除、前驱、后继,统计即可

#include"cstdio"
#include"cstring"
#include"iostream"
#include"algorithm"
#include"ctime"
using namespace std; const int MAXN=8e4+5;
const int MOD=1e6; int n,cnt,root,co;
bool kd;
long long ans;
int siz[MAXN],sn[MAXN][2],rev[MAXN];
long long val[MAXN]; int cret(long long v)
{
siz[++cnt]=1;
val[cnt]=v;
rev[cnt]=rand();
return cnt;
} int un(int x,int y)
{
if(!x||!y) return x|y;
if(rev[x]<=rev[y]){
sn[x][1]=un(sn[x][1],y);
siz[x]=siz[sn[x][0]]+siz[sn[x][1]]+1;
return x;
}sn[y][0]=un(x,sn[y][0]);
siz[y]=siz[sn[y][0]]+siz[sn[y][1]]+1;
return y;
} void dro(int k,int v,int &x,int &y)
{
if(!k){x=y=0;return;}
if(val[k]<=v) x=k,dro(sn[k][1],v,sn[k][1],y);
else y=k,dro(sn[k][0],v,x,sn[k][0]);
siz[k]=siz[sn[k][0]]+siz[sn[k][1]]+1;
return;
} int rnk(int k,int v)
{
if(sn[k][0]==k) return n+1;
if(v<=siz[sn[k][0]]) return rnk(sn[k][0],v);
if(v==siz[sn[k][0]]+1) return k;
return rnk(sn[k][1],v-siz[sn[k][0]]-1);
} void ins(int v)
{
int x,y;
dro(root,val[v],x,y);
root=un(un(x,v),y);
return;
} void del(int v)
{
int x,y,z,c;
dro(root,v,x,z),dro(x,v-1,x,y);c=y;
y=un(sn[y][0],sn[y][1]);sn[c][0]=sn[c][1]=val[c]=siz[c]=0;
root=un(un(x,y),z);
return;
} void debug()
{
for(int i=1;i<=siz[root];++i) printf("%d ",val[rnk(root,i)]);
puts("-");
} int main()
{
scanf("%d",&n);
int ct1=cret((long long)-1e10),ct2=cret((long long)1e10);
ins(ct1);ins(ct2);
while(n--){
int c,v;scanf("%d%d",&c,&v);
if(!co||kd==c){
kd=c;++co;
int ct=cret(v);
ins(ct);
}else{
int x,y;--co;
dro(root,v,x,y);
long long ct1=val[rnk(x,siz[x])],ct2=val[rnk(y,1)];
root=un(x,y);
if(abs(ct1-v)<=abs(ct2-v)) del(ct1),ans=(ans+abs(ct1-v))%MOD;
else del(ct2),ans=(ans+abs(ct2-v))%MOD;
}
}printf("%lld\n",ans);
return 0;
}

[HNOI2004]宠物收养场的更多相关文章

  1. [HNOI2004]宠物收养场 Treap前驱后继

    凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领 ...

  2. P2286 [HNOI2004]宠物收养场

    题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...

  3. 洛谷P2286 [HNOI2004]宠物收养场【Treap】题解+AC代码

    题目传送门啦~啦~啦~ 题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的 ...

  4. 洛谷P2286 [HNOI2004]宠物收养场

    题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...

  5. BZOJ1208[HNOI2004]宠物收养场——treap

    凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领 ...

  6. 洛谷 P2286 [HNOI2004]宠物收养场

    题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...

  7. [HNOI2004]宠物收养场 BZOJ1208 splay tree

    题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...

  8. LG_2286_[HNOI2004]宠物收养场

    题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...

  9. 1208. [HNOI2004]宠物收养场【平衡树-splay】

    Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特 ...

  10. [HNOI2004]宠物收养场(Treap)

    洛谷传送门 这题真是恶心,一开始没理解题意. 原来如果有狗,狗就会存在收养场中,直到有人来领养: 如果有人,人也会存在收养场中,直到有狗来被领养. 就是建一个treap,狗来把狗插进去,人来后把狗领养 ...

随机推荐

  1. poj3624 Charm Bracelet

    http://poj.org/problem?id=3624 题目大意:贝茜去了商场的珠宝店,发现了一个迷人的手镯.当然,她想装最好的魅力(N(1≤N≤3402)可用的魅力).每个魅力提供的列表中都有 ...

  2. 使用jquery怎么选择有两个class的元素?

    实例: 我们想要选择class为:box_list clearfix 的div <div class="box_list clearfix" style="z-in ...

  3. 【BZOJ3217】ALOEXT 分块

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3217 分块过掉辣!!!!!!$O(n^{1.5}+q\times \sqrt{n})$的 ...

  4. zabbix 调用python脚本监控 磁盘剩余空间(创建模版,创建监控项,创建触发器)

    主要 记录一下  使用zabbix 自己创建模版.监控项.触发器,并调用python脚本. 需求: 监控备份机磁盘剩余空间(windows系统) 一.安装zabbix_agent 比较简单 修改配置文 ...

  5. EF 数据库连接约定(Connection String Conventions in Code First)

    一个典型的EF应用大多数情况下是一个DbContext的派生类(derived class)来控制,通常可以使用该派生类调用DbContext的构造函数,来控制以下的东西: (1).上下文如何连接到数 ...

  6. OkHttp3实现Cookies管理及持久化

    转发自:http://www.codeceo.com/article/okhttp3-cookies-manage.html OKHttp3正式版刚发布了没几天,正好重构之前的代码,于是第一时间入坑了 ...

  7. zookeeper基础知识

    Zookeeper简介 ZooKeeper设计目的 最终一致性client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能. 可靠性具有简单.健壮.良好的性能,如 ...

  8. centos6.7 安装 virtualBox 再安装 centos 7

    Tag: 黄色为自己实际情况需要设置的部分,绿色部分为虚拟机名称(自定义) 1.创建虚拟机VBoxManage createvm --name centos7 --ostype Linux26_64 ...

  9. pygame游戏开发-简介

    转自白月黑羽Python教程:http://www.python3.vip/doc/tutorial/python/game/ 推荐对Python有兴趣的童鞋可以关注去看看,教程语言平实,简单易懂. ...

  10. window.history的跳转实质-HTML5 history API 解析

    在上一浏览器跳转行为的测试中,我们看到了通过不同的方法操作浏览器跳转时,它的刷新表现有所不同,在这一文章中,将看看,为何会产生这样的不同?其背后的实质是什么?浏览器的访问历史记录到底是如何运作的呢? ...