题目传送门

平衡树的题。

因为题目给出条件(其实自己也知道):同一时间呆在收养所中的,要么全是宠物,要么全是领养者,这些宠物和领养者的个数不会超过10000个。

所以只要维护一颗平衡树,它的里面要不全是人,要不全是宠物。

找到人的前驱后继比较。

code:

/**************************************************************
Problem: 1208
User: yekehe
Language: C++
Result: Accepted
Time:180 ms
Memory:2388 kb
****************************************************************/ #include <cstdio>
#include <cstdlib>
using namespace std; int read()
{
char c;while(c=getchar(),c<''||c>'');
int x=c-'';while(c=getchar(),c>=''&&c<='')x=x*+c-'';
return x;
} int N,now,root,cnt,dist;
int tr[][],v[],r[],f[]; void clear(int x){f[x]=tr[x][]=tr[x][]=r[x]=v[x]=;}
void up(int x){f[x]=f[tr[x][]]+f[tr[x][]];}
int abs(int x){return x>?x:-x;} void rotate(int &x,int o)
{
int k=tr[x][o];
tr[x][o]=tr[k][o^];
tr[k][o^]=x;
f[k]=f[x];
up(x);
x=k;
} void insert(int &x,int val)
{
if(!x){
x=++cnt;
v[x]=val;
r[x]=rand();
f[x]++;
return ;
}
int to=val>v[x];
insert(tr[x][to],val);
if(r[x]>r[tr[x][to]])rotate(x,to);
return ;
} void del(int &x,int val)
{
if(v[x]==val){
if(!(tr[x][]+tr[x][])){
clear(x);x=;
return ;
}
if(!(tr[x][]*tr[x][])){
int w=tr[x][]+tr[x][];
clear(x);x=w;
return ;
}
rotate(x,);
del(x,val);
return ;
}
f[x]--;
int to=val>v[x];
del(tr[x][to],val);
up(x);
return ;
} void pre(int x,int val)//前驱
{
if(!x)return ;
if(v[x]>=val)pre(tr[x][],val);
else{
dist=x;
pre(tr[x][],val);
}
} void bac(int x,int val)//后继
{
if(!x)return ;
if(v[x]<=val)bac(tr[x][],val);
else{
dist=x;
bac(tr[x][],val);
}
} int main()
{
srand();
N=read();
int i,ans=,o1,o2,tot=;
for(i=;i<=N;i++){
int x=read(),y=read();
if(!tot){insert(root,y),now=x;tot++;continue;}
if(now==x)insert(root,y),tot++;
else{
dist=;pre(root,y);o1=dist;
dist=;bac(root,y);o2=dist;
if(!o1&&!o2)continue;
int k1=o1?y-v[o1]:2e9,k2=o2?v[o2]-y:2e9;
dist=k1>k2?o2:o1;//找较接近的值
ans=(ans+abs(v[dist]-y))%;
del(root,v[dist]);
tot--;
}
}
printf("%d",ans);
return ;
}

BZOJ1208_宠物收养所_KEY的更多相关文章

  1. Bzoj1208 [HNOI2004]宠物收养所

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 7457  Solved: 2960 Description 最近,阿Q开了一间宠物收养所.收养所提供两 ...

  2. BZOJ 1208: [HNOI2004]宠物收养所

    1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 7514  Solved: 2982[Submit][Sta ...

  3. 宠物收养所(bzoj1208)

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

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

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

  5. 【BZOJ-1208】宠物收养所 Splay

    1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 6638  Solved: 2601[Submit][Sta ...

  6. BZOJ1208 宠物收养所

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

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

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

  8. bzoj 1208: [HNOI2004]宠物收养所 set

    1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 7328  Solved: 2892[Submit][Sta ...

  9. BZOJ_1208_&_Codevs_1258_[HNOI2004]_宠物收养所_(平衡树/set)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1208 (据说codevs要更新?就不放codevs的地址了吧...) 有宠物和人,每个单位都有 ...

随机推荐

  1. java多态抽象类实例

    编写一个Soldier类,描述具有普遍行为和属性的一个士兵对象. 编写陆军士兵.海军士兵.军官类来扩展Soldier类. 设计Soldier类的相关属性和方法. 建模几个陆军士兵.海军士兵.军官类来继 ...

  2. 【js】五子棋-UI学习

    http://www.imooc.com/learn/639 棋盘用canvas实现

  3. 34、springboot的热部署

    热部署 在开发中我们修改一个Java文件后想看到效果不得不重启应用,这导致大量时间花费, 我们希望不重启应用的情况下,程序可以自动部署(热部署).有以下四种情况,如何能实现热部署. 1.模板引擎 在S ...

  4. [转]MVP+WCF+三层结构搭建项目框架

    最近,我一直在重构之前做的一个项目,在这个过程中感慨万千.原先的项目是一个运用了WCF的C/S系统,在客户端运用了MVC模式,但MVC的View.Model耦合以及WCF端分布式欠佳等问题让我有了重构 ...

  5. css 尾巴

    用border制作三角形 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  6. ASP.NET Core MVC中Controller的Action如何直接使用Response.Body的Stream流输出数据

    在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让 ...

  7. SaltStack 自动化工具

    1.服务端安装master: # yum -y install salt-master # yum -y install salt-minion 2.客户端安装minion: # yum -y ins ...

  8. weblogic.xml中的虚拟目录的配置

    项目中的Ueditor富文本编辑器中上传图片后要能够预览. 如下图: 实现: 配置weblogic的虚拟目录:项目名称是test 如图: 这个表示:所有的访问/uefile/*的路径都会被转发到服务器 ...

  9. jQuery对象与DOM对象的相互转化

    jQuery是一个类数组对象,DOM对象就是一个单独的DOM元素,他们都是可以操作的DOM元素. 一.jQuery对象转化为DOM对象 有以下两种方法: 方法一:利用数组下标的方式读取jQuery中的 ...

  10. hubilder 打包app ios高版本不支持问题

    <script type="text/javascript"> document.addEventListener('plusready', function(){ v ...