#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. Spring Cloud Alibaba学习笔记(11) - RocketMQ事务消息

    在Spring中,我们要实现事务,一般通过@Transactional注解实现.这在引入RocketMQ之前没有问题,但是在引入了RocketMQ之后,如果消息发送之后的业务逻辑处理发生了异常的话,这 ...

  2. CCF 2017-03-2 学生排队

    CCF 2017-03-2 学生排队 题目 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整.一次调整小明可能让一位同学 ...

  3. VMWare安装Ubuntu16.04

    一 概述 VMware Workstation 12的安装(略过,自行百度) Ubuntu16.04的安装 克隆出多个镜像 二 Ubuntu16.04的安装 1 准备 Window10 专业版(关闭H ...

  4. springboot_2

    1. 配置文件简介 spring boot使用一个全局配置文件:application.properties或者application.yml,放置在src/main/resources目录下或者类路 ...

  5. C#不支持XPATH2.0

    .net中的XPATH是1.0版本的,很多2.0中的函数是不兼容的,比如lower-case().replace()函数等,下面中的XPATH语句在运行时会报错 //table[contains(lo ...

  6. (转)使用SDWebImage和YYImage下载高分辨率图,导致内存暴增的解决办法

    http://blog.csdn.net/guojiezhi/article/details/52033796

  7. arm9的操作模式,寄存器,寻址方式

    工作模式 Arm有7种工作模式: 名称 简称 简介 User Usr 正常用户程序执行的模式(linux下用户程序就是在这一模式执行的.) FIQ Fiq 快速中断模式 IRQ Irq 普通中断模式 ...

  8. PHP变量的范围

    1.局部变量 function test(){ $a=1;//局部变量$a,尽在这个函数内部有效 } echo $a; 2.全局变量 $i=10;//全局变量(外部变量) define('MY_NAM ...

  9. IDEA 中常用快捷键

    1.搜索文件(整个项目) ctrl+shift+n 2.最近打开文件 ctrl+e 3.实现接口中方法 ctrl+i 4.跳到上一行 ctrl+alt+enter 5.删除当前行 ctrl+y 6.重 ...

  10. 软件测试_Loadrunner_性能测试_脚本优化_关联_手动关联

    在写文章之前写一下自己的心路历程,录制脚本主要是上传图片并返回查询结果的过程.录制完脚本后发现函数中URl地址中有图片ID后台随机生成的32位随机数,并且每次上传图片id都会变化.我就上网搜索了一些解 ...