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的地址了吧...) 有宠物和人,每个单位都有 ...
随机推荐
- java多态抽象类实例
编写一个Soldier类,描述具有普遍行为和属性的一个士兵对象. 编写陆军士兵.海军士兵.军官类来扩展Soldier类. 设计Soldier类的相关属性和方法. 建模几个陆军士兵.海军士兵.军官类来继 ...
- 【js】五子棋-UI学习
http://www.imooc.com/learn/639 棋盘用canvas实现
- 34、springboot的热部署
热部署 在开发中我们修改一个Java文件后想看到效果不得不重启应用,这导致大量时间花费, 我们希望不重启应用的情况下,程序可以自动部署(热部署).有以下四种情况,如何能实现热部署. 1.模板引擎 在S ...
- [转]MVP+WCF+三层结构搭建项目框架
最近,我一直在重构之前做的一个项目,在这个过程中感慨万千.原先的项目是一个运用了WCF的C/S系统,在客户端运用了MVC模式,但MVC的View.Model耦合以及WCF端分布式欠佳等问题让我有了重构 ...
- css 尾巴
用border制作三角形 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- ASP.NET Core MVC中Controller的Action如何直接使用Response.Body的Stream流输出数据
在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让 ...
- SaltStack 自动化工具
1.服务端安装master: # yum -y install salt-master # yum -y install salt-minion 2.客户端安装minion: # yum -y ins ...
- weblogic.xml中的虚拟目录的配置
项目中的Ueditor富文本编辑器中上传图片后要能够预览. 如下图: 实现: 配置weblogic的虚拟目录:项目名称是test 如图: 这个表示:所有的访问/uefile/*的路径都会被转发到服务器 ...
- jQuery对象与DOM对象的相互转化
jQuery是一个类数组对象,DOM对象就是一个单独的DOM元素,他们都是可以操作的DOM元素. 一.jQuery对象转化为DOM对象 有以下两种方法: 方法一:利用数组下标的方式读取jQuery中的 ...
- hubilder 打包app ios高版本不支持问题
<script type="text/javascript"> document.addEventListener('plusready', function(){ v ...