BZOJ1208_宠物收养所_KEY
平衡树的题。
因为题目给出条件(其实自己也知道):同一时间呆在收养所中的,要么全是宠物,要么全是领养者,这些宠物和领养者的个数不会超过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的更多相关文章
- Bzoj1208 [HNOI2004]宠物收养所
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 7457 Solved: 2960 Description 最近,阿Q开了一间宠物收养所.收养所提供两 ...
- BZOJ 1208: [HNOI2004]宠物收养所
1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 7514 Solved: 2982[Submit][Sta ...
- 宠物收养所(bzoj1208)
Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特 ...
- 【BZOJ1208】[HNOI2004]宠物收养所 Splay
还是模板题,两颗splay,找点删即可. #include <iostream> #include <cstdio> #include <cstdlib> #def ...
- 【BZOJ-1208】宠物收养所 Splay
1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6638 Solved: 2601[Submit][Sta ...
- BZOJ1208 宠物收养所
Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特 ...
- C++之路进阶——codevs1285(宠物收养所)
1285 宠物收养所 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服 ...
- bzoj 1208: [HNOI2004]宠物收养所 set
1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 7328 Solved: 2892[Submit][Sta ...
- BZOJ_1208_&_Codevs_1258_[HNOI2004]_宠物收养所_(平衡树/set)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1208 (据说codevs要更新?就不放codevs的地址了吧...) 有宠物和人,每个单位都有 ...
随机推荐
- 【RabbitMQ】4、三种Exchange模式——订阅、路由、通配符模式
前两篇博客介绍了两种队列模式,这篇博客介绍订阅.路由和通配符模式,之所以放在一起介绍,是因为这三种模式都是用了Exchange交换机,消息没有直接发送到队列,而是发送到了交换机,经过队列绑定交换机到达 ...
- centos虚拟机安装,配置静态ip可以访问网络
centos安装过程中需要注意几个问题 1.选择安装的软件 默认选择的是mininal,应该选择GNEME Desktop 安装的过程中可以设置network 配置linux网络命令 具体配置 退出键 ...
- UVa 12230 - Crossing Rivers(数学期望)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- [19/04/24-星期三] GOF23_创建型模式(建造者模式、原型模式)
一.建造者模式 本质:分离了对象子组件的单独构造(由Builder负责)和装配的分离(由Director负责),从而可以构建出复杂的对象,这个模式适用于:某个对象的构建过程十分复杂 好处:由于构建和装 ...
- [转]从三层架构到MVC,MVP
本来是不想跳出来充大头蒜的,但最近发现园子里关于MVC的文章和讨论之风越刮越烈,其中有些朋友的观点并不是我所欣赏和推荐的,同时最近也在忙着给公司里的同事做MVC方面的“扫盲工作”.所以就搜集了一些大家 ...
- CS20Chapter3
waiting P54 shuffle data 03_Lecture note_Linear and Logistic Regression 学习点1: python的地址输入是要不能用正斜杠\的 ...
- PAT——1072. 开学寄语(20)
下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其QQ,封其电脑,夺其手机,收其ipad,断其wifi,使其百无聊赖,然后,净面.理发.整衣,然后思过.读书.锻炼.明智.开悟.精进 ...
- Selenium自动化测试之结果处理
Selenium自动化测试之结果处理 一.断言 断言相当于性能测试中的检查点,常用断言种类很多,具体可以查看断言API:判断预期结果和实际结果是否一致,断言成功,程序继续处理,失败则终止运行,示例如下 ...
- 利用PDCA工具改进周例会
PDCA简介 PDCA循环又叫戴明环,是美国质量管理专家休哈特博士首先提出的,由戴明采纳.宣传,获得普及,从而也被称为“戴明环”. PDCA最早用来解决全面质量管理问题,但是PDCA也可以用来作为一个 ...
- Oracle11gR2(ASM,UDEV)的RAC搭建安装
基本信息: 1) 安装包: 操作系统:rhel-server-6.7-x86_64-dvd.iso rac安装包: Oracle11gR2:linux.x64_11gR2_database_1of2. ...