【BZOJ1208】宠物收养所(平衡树,splay)
题意:见题面
思路:因为每个时刻要么全是人要么全是宠物,所以可以一棵splay解决
维护单点插入,单点删除,求前驱,求后继即可
var t:array[..,..]of longint;
num,fa:array[..]of longint;
n,cnt,t1,t2,i,root,p,x,y:longint;
ans:int64; procedure rotate(x:longint;var k:longint);
var y,z,l,r:longint;
begin
y:=fa[x]; z:=fa[y];
if t[y,]=x then l:=
else l:=;
r:=-l;
if y=k then k:=x
else
if t[z,]=y then t[z,]:=x
else t[z,]:=x;
fa[x]:=z; fa[y]:=x; fa[t[x,r]]:=y;
t[y,l]:=t[x,r]; t[x,r]:=y;
end; procedure splay(x:longint;var k:longint);
var y,z:longint;
begin
while x<>k do
begin
y:=fa[x]; z:=fa[y];
if y<>k then
begin
if (t[y,]=x)xor(t[z,]=y) then rotate(x,k)
else rotate(y,k);
end;
rotate(x,k);
end;
end; procedure ins(var k:longint;x,last:longint);
begin
if k= then
begin
inc(cnt);
k:=cnt; num[k]:=x;
fa[k]:=last; splay(k,root);
exit;
end;
if x<num[k] then ins(t[k,],x,k)
else ins(t[k,],x,k);
end; procedure del(x:longint);
var k:longint;
begin
splay(x,root);
if t[x,]*t[x,]= then root:=t[x,]+t[x,]
else
begin
k:=t[x,];
while t[k,]> do k:=t[k,];
t[k,]:=t[x,]; fa[t[x,]]:=k;
root:=t[x,];
end;
fa[root]:=;
end; procedure pred(k,x:longint);
begin
if k= then exit;
if num[k]<=x then
begin
t1:=k; pred(t[k,],x);
end
else pred(t[k,],x);
end; procedure succ(k,x:longint);
begin
if k= then exit;
if num[k]>=x then
begin
t2:=k; succ(t[k,],x);
end
else succ(t[k,],x);
end; begin
assign(input,'bzoj1208.in'); reset(input);
assign(output,'bzoj1208.out'); rewrite(output);
readln(n);
for i:= to n do
begin
readln(x,y);
if root= then begin p:=x; ins(root,y,); end
else if p=x then ins(root,y,)
else
begin
t1:=-; t2:=-;
pred(root,y); succ(root,y);
if t1=- then
begin
ans:=ans+num[t2]-y; ans:=ans mod ; del(t2);
end
else if t2=- then
begin
ans:=ans+y-num[t1]; ans:=ans mod ; del(t1);
end
else
if y-num[t1]>num[t2]-y then
begin
ans:=ans+num[t2]-y; ans:=ans mod ; del(t2);
end
else
begin
ans:=ans+y-num[t1]; ans:=ans mod ; del(t1);
end;
end;
end;
writeln(ans);
close(input);
close(output);
end.
【BZOJ1208】宠物收养所(平衡树,splay)的更多相关文章
- [BZOJ1208]宠物收养所(Splay)
Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特 ...
- [bzoj1208][HNOI2004][宠物收养所] (平衡树)
Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特 ...
- BZOJ1208 宠物收养所
Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特 ...
- 【HNOI2004】宠物收养所(splay)
题面 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的 ...
- BZOJ 1208 宠物收养所 | 平衡树模板题
BZOJ 1208 宠物收养所 我犯过的错误:删除一个节点后没有update新的根节点,导致size错了! #include <cstdio> #include <cmath> ...
- BZOJ 1208 [HNOI2004]宠物收养所:Splay(伸展树)
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1208 题意: 有一个宠物收养所,在接下来一段时间内会陆续有一些宠物进到店里,或是一些人来领 ...
- HYSBZ 1208 宠物收养所 (Splay树)
题意:一家宠物收养所负责处理领养者与遗弃宠物业务,有人来领宠物,则领一只最理想的.若没有宠物了,领养者们就得等到宠物来,宠物一来立刻送给其中一个等待者.如果有两个理想的选择,则选择那个值较小的.收养所 ...
- B1208 [HNOI2004]宠物收养所 平衡树||set (滑稽)
这个题是一道splay裸题,但是我不太会写,所以用set直接水过去!!!哈哈哈哈,美滋滋. set总结: set是一个集合,然后里面没用重复的元素.里面有一些函数: begin() ,返回se ...
- 【BZOJ1208】宠物收养所(splay)
题意:见题面 思路:因为每个时刻要么全是人要么全是宠物,所以可以一棵splay解决 维护单点插入,单点删除,求前驱,求后继即可 ..,..]of longint; num,fa:..]of longi ...
- fjutacm 2492 宠物收养所 : Splay 模板 O(nlogn)
/** problem: http://www.fjutacm.com/Problem.jsp?pid=2492 Splay blog: https://tiger0132.blog.luogu.or ...
随机推荐
- 尚学堂Spring视频教程(七):AOP XML
此处省略N个字.... 直接看下面 推荐链接: Spring Aop实例之xml配置
- Oracle数据库监听服务无法启动
(1) 安装好Oracle后,启动Net Manager,测试orcl失败,报错“ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务”,需要修改监听文件.修改前: # list ...
- eaby技术架构变迁
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 最近在infoq上面看到 ebay介绍其系统架构变迁以及系统设计分享方面的讲座,其中 ...
- listview 的适配器 getview 随着软件健盘显示和隐藏,出现多个空的position问题
AndroidManifest 里配置 android:windowSoftInputMode="stateHidden|adjustPan" listview的宽高设置成fill ...
- css3动画(@keyframes和animation的用法)
animation基本用法是: animation: name keeping-time animate-function delay times iteration final; 第一个参数:nam ...
- 2016-09-19: linux后台运行
linux后台运行命令两种方式: 1. command & : 后台运行,你关掉终端会停止运行 2. nohup command & : 后台运行,你关掉终端也会继续运行 简介 L ...
- C#读取excel数据到datatable中
DataTable dtGBPatient = new DataTable(); string strConn;string excelName; //注意:把一个excel文件看做一个数据库,一个s ...
- spring mvc <mvc:default-servlet-handler /> 。
spring mvc配置 <mvc:default-servlet-handler /> 时. 提示 The prefix "mvc" for element &quo ...
- jQuery 学习笔记(函数调用机制)
最近在学前端框架amazeui,之前用其中的CSS样式搭建了一个伪360网页,学会了点布局的东西,但是始终觉得有点无聊.所以这几天就开始研究jquery代码了. 对于我这样一个初学者来说,有很多东西都 ...
- Geometry Stage in Rendering pipeline (读书笔记2 --- Real-Time rendering)
Geometry Stage一般包含下面几个阶段 1. Model & View Transform(模型和视图变换) --- 模型空间--> 世界空间 模型变换:每个模型经过模型变换来 ...