#include<cstdio>
#include<iostream>
using namespace std;
int shu[80004][2],n,size,root,kind,zhi[80004],fa[80004],sum=0;
int b1,b2;
void xuan(int a1)
{
int a2,a3,l,r;
a2=fa[a1];
a3=fa[a2];
if(shu[a2][0]==a1)
l=0;
else
l=1;
r=l^1;
if(a2==root)
root=a1;
else
if(shu[a3][0]==a2)
shu[a3][0]=a1;
else
shu[a3][1]=a1;
fa[a1]=a3;
fa[a2]=a1;
shu[a2][l]=shu[a1][r];
fa[shu[a1][r]]=a2;
shu[a1][r]=a2;
return;
}
void zhuan(int a1)
{
int y,z;
for(;a1!=root;)
{
y=fa[a1];
z=fa[y];
if(y!=root)
if((shu[y][0]==a1)^(shu[z][0]==y))
xuan(a1);
else
xuan(y);
xuan(a1);
}
}
void cha(int &a1,int a2,int a3)
{
if(a1==0)
{
size++;
a1=size;
zhi[a1]=a2;
fa[a1]=a3;
zhuan(a1);
return;
}
if(a2<zhi[a1])
cha(shu[a1][0],a2,a1);
else
cha(shu[a1][1],a2,a1);
return;
}
void qian(int a1,int a2)
{
if(a1==0)
return;
if(zhi[a1]<=a2)
{
b1=a1;
qian(shu[a1][1],a2);
}
else
qian(shu[a1][0],a2);
return;
}
void hou(int a1,int a2)
{
if(a1==0)
return;
if(zhi[a1]>=a2)
{
b2=a1;
hou(shu[a1][0],a2);
}
else
hou(shu[a1][1],a2);
}
void del(int a1)
{
zhuan(a1);
if(shu[a1][0]*shu[a1][1]==0)
root=shu[a1][0]+shu[a1][1];
else
{
int k=shu[a1][1];
while(shu[k][0])
k=shu[k][0];
shu[k][0]=shu[a1][0];
fa[shu[a1][0]]=k;
root=shu[a1][1];
}
fa[root]=0;
return;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int a1,a2;
scanf("%d%d",&a1,&a2);
if(!root)
kind=a1;
if(kind==a1)
cha(root,a2,0);
else
{
b1=-1;
b2=-1;
qian(root,a2);
hou(root,a2);
if(b1==-1)
{
sum+=zhi[b2]-a2;
sum%=1000000;
del(b2);
}
else if(b2==-1)
{
sum+=a2-zhi[b1];
sum%=1000000;
del(b1);
}
else if(a2-zhi[b1]<=zhi[b2]-a2)
{
sum+=a2-zhi[b1];
sum%=1000000;
del(b1);
}
else
{
sum+=zhi[b2]-a2;
sum%=1000000;
del(b2);
}
}
}
printf("%d",sum);
return 0;
}

splay树 1285 宠物收养所的更多相关文章

  1. 【wikioi】1285 宠物收养所

    题目链接:http://www.wikioi.com/problem/1285/ 算法:Splay 刚开始看到这题,就注意到特征abs了,并且数据n<=80000显然不能暴力,只能用nlgn的做 ...

  2. C++之路进阶——codevs1285(宠物收养所)

    1285 宠物收养所  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服 ...

  3. HNOI2004 宠物收养所 (Treap)

    1285 宠物收养所 http://codevs.cn/problem/1285/  时间限制: 1 s  空间限制: 128000 KB     题目描述 Description 最近,阿Q开了一间 ...

  4. BZOJ 1208 [HNOI2004]宠物收养所:Splay(伸展树)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1208 题意: 有一个宠物收养所,在接下来一段时间内会陆续有一些宠物进到店里,或是一些人来领 ...

  5. HYSBZ 1208 宠物收养所 (Splay树)

    题意:一家宠物收养所负责处理领养者与遗弃宠物业务,有人来领宠物,则领一只最理想的.若没有宠物了,领养者们就得等到宠物来,宠物一来立刻送给其中一个等待者.如果有两个理想的选择,则选择那个值较小的.收养所 ...

  6. 【HNOI2004】宠物收养所(splay)

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

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

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

  8. [BZOJ1208]宠物收养所(Splay)

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

  9. 【BZOJ1208】[HNOI2004]宠物收养所 Splay

    还是模板题,两颗splay,找点删即可. #include <iostream> #include <cstdio> #include <cstdlib> #def ...

随机推荐

  1. 使用parted对Linux未分区部分进行分区

    1. 使用命令parted -l 查看当前分区 可以看到硬盘有2396GB即有2.5T , 但是分区就分了50G一个盘, 需要分剩下部分 [root@localhost ~]# parted -l M ...

  2. oracle_job进程相关学习测试

    Oracle cjq0进程测试 测试流程: .CJQ进程不存在 .模拟问题处理 .问题总结 一.问题现象 CJQ0进程不存在 [root@adg1 ~]# ps -ef|grep cjq root : ...

  3. Synergy 一套键鼠同时控制多台电脑

    百度云(1.5是最后一个免费的版本,linux,mac,windows全有): 链接: https://pan.baidu.com/s/1A_qR8FHd8a0ILQXsSqjfCQ 密码: 9h8c

  4. 记https在Android浏览器无法访问

    问题描述 M站静态资源单独配置的https域名,在Android原生浏览器里面打开之后提示证书不安全,在chrome.UC之类的浏览器之下,静态资源都能够正常访问 问题原因 CA证书链不完整 http ...

  5. 在Windows上安装Redis

    微软官网源码 https://github.com/MicrosoftArchive/redis 这里介绍安装Signed binaries版本 使用Chocolatey(Windows包管理工具)安 ...

  6. English-培训2-五大句型

  7. Microsoft Word (2016) Deceptive File Reference ZDI-CAN-7949

    [+] Credits: John Page (aka hyp3rlinx) [+] Website: hyp3rlinx.altervista.org[+] Source:  http://hyp3 ...

  8. c# 子类的声明

  9. Django的安装和使用

    一.安装 ① 命令行安装 # 命令提示符下 # 方式一 pip install django==1.11.16 -i https://pypi.tuna.tsinghua.edu.cn/simple ...

  10. iveiw DatePicker 只能选择本月之前的日期,本月包括之后都不能选择

    日期判断只能选择本月之前的日期 <DatePicker type="date" :options="options3" format="yyyy ...