HNOI2002营业额统计(平衡树)
标准的平衡树。
贴个splay吧
var
v,l,r,fa:array[..] of longint;
root,x,i,n,ans:longint;
procedure zig(x:longint);
var y,z:longint;
begin
y:=fa[x];z:=fa[y];
if root=y then root:=x;
l[y]:=r[x];
if r[x]<> then fa[r[x]]:=y;
r[x]:=y;
fa[y]:=x;
fa[x]:=z;
if z= then exit;
if l[z]=y then l[z]:=x else r[z]:=x;
end;
procedure zag(x:longint);
var y,z:longint;
begin
y:=fa[x];z:=fa[y];
if root=y then root:=x;
r[y]:=l[x];
if l[x]<> then fa[l[x]]:=y;
l[x]:=y;
fa[y]:=x;
fa[x]:=z;
if z= then exit;
if l[z]=y then l[z]:=x else r[z]:=x;
end;
procedure splay(x:longint);
var y,z:longint;
begin
while x<>root do
begin
y:=fa[x];
if y=root then
begin
if x=l[y] then zig(x) else zag(x);
exit;
end;
z:=fa[y];
if l[y]=x then
if l[z]=y then
begin
zig(y);zig(x)
end
else
begin
zig(x);zag(x);
end
else
if r[z]=y then
begin
zag(y);zag(x);
end
else
begin
zag(x);zig(x);
end;
end;
end;
procedure insert(x,k:longint);
var i,j:longint;
begin
if root= then
begin
root:=k;
v[k]:=x;l[k]:=;r[k]:=;fa[k]:=;
exit;
end;
i:=root;
v[k]:=x;
while true do
begin
if x<=v[i] then j:=l[i] else j:=r[i];
if j= then
begin
if x<=v[i] then l[i]:=k else r[i]:=k;
fa[k]:=i;
break;
end;
i:=j;
end;
splay(k);
end;
function min(x,k:longint):longint;
var i,j,tmp:longint;
begin
tmp:=maxlongint;
i:=l[k];
while i<> do
begin
if abs(v[i]-x)<tmp then begin tmp:=abs(v[i]-x);j:=i;end;
i:=r[i];
end;
i:=r[k];
while i<> do
begin
if abs(v[i]-x)<tmp then begin tmp:=abs(v[i]-x);j:=i;end;
i:=l[i];
end;
splay(j);
exit(tmp);
end;
begin
read(n);
ans:=;
for i:= to n do
begin
read(x);
insert(x,i);
if i<> then ans:=ans+min(x,i) else ans:=x;
end;
writeln(ans);
end.
HNOI2002营业额统计(平衡树)的更多相关文章
- BZOJ_1588_&_Codevs_1296_[HNOI2002]_营业额统计(平衡树/set)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1588 给出每一天的营业值,求出之前的天当中与它相差最小的营业值与它的差的绝对值(第一天的差值为 ...
- 数据结构:(平衡树,链表)BZOJ 1588[HNOI2002]营业额统计
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 12173 Solved: 4354[Submit][Sta ...
- 1588: [HNOI2002]营业额统计
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 9203 Solved: 3097[Submit][Stat ...
- 【链表】BZOJ1588: [HNOI2002]营业额统计
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 17555 Solved: 7179[Submit][Sta ...
- [HNOI2002]营业额统计_Treap
[HNOI2002]营业额统计 题目大意:给你一串n数序列,对于每一个刚输入的数a,找到一个前面的数k,使得|a-k|最小. 注释:$n<=32767,ai<=10^6$. 想法:刚学Tr ...
- 2018.07.06 BZOJ 1588: HNOI2002营业额统计(非旋treap)
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MB Description 营业额统计 Tiger最近被公司升任为营业部经理,他上 ...
- cogs1533 [HNOI2002]营业额统计
cogs1533 [HNOI2002]营业额统计 啦啦啦啦 不维护区间的平衡树题都是树状数组+二分练手题! 不会的参考我的普通平衡树的多种神奇解法之BIT+二分答案 和上一篇博文完全一样2333 另外 ...
- BZOJ1588: [HNOI2002]营业额统计[BST]
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 14151 Solved: 5366[Submit][Sta ...
- BZOJ 1588: [HNOI2002]营业额统计
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 14396 Solved: 5521[Submit][Sta ...
- BZOJ 1588: [HNOI2002]营业额统计 双向链表 / splay / treap
1588: [HNOI2002]营业额统计 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger ...
随机推荐
- org.apache.commons.dbutils.QueryRunner 执行sqlserver的存储过程
执行不带输出参数的存储过程与 执行普通update sql没有什么区别,直接调用即可: 示例代码: public Boolean startResidentialInfoStatistics(Str ...
- Netty4.x中文教程系列(四) 对象传输
Netty4.x中文教程系列(四) 对象传输 我们在使用netty的过程中肯定会遇到传输对象的情况,Netty4通过ObjectEncoder和ObjectDecoder来支持. 首先我们定义一个U ...
- 把eclipse"中文版"变成"英文版"
在Eclipse.exe当前路径下,直接新建快捷方式,右键属性,添加如下参数即可 eclipse.exe -nl en
- SVN库实时同步设置
为了安全起见,SVN服务器除了做定时全量备份和增量备份以外,如条件允许,可做实时备份. 这需要2台机器,一台是master server,另一台做mirror server.master做主服务,mi ...
- linux sort 命令详解(转 )
linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比 ...
- YUM详解
用YUM升级软件打开终端,切换到root用户,yum的操作大都须有超级用户的权限.首 先,yum update,这一步是必须的,yum会从服务器的header目录下载rpm的header,放在本地的缓 ...
- NET 使用HtmlAgilityPack抓取网页数据
刚刚学习了XPath路径表达式,主要是对XML文档中的节点进行搜索,通过XPath表达式可以对XML文档中的节点位置进行快速定位和访问,html也是也是一种类似于xml的标记语言,但是语法没有那么严谨 ...
- 深入浅出Java并发包—原子类操作
我们知道,JDK1.5以后引入了并发包(java.util.concurrent)用于解决多CPU时代的并发问题,而并发包中的类大部分是基于Queue的并发类,Queue在大多数情况下使用了原子类(A ...
- lintcode 中等题:subSets 子集
题目 子集 给定一个含不同整数的集合,返回其所有的子集 样例 如果 S = [1,2,3],有如下的解: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], ...
- css一个图片包含多个图片|网站侧栏导航
<html> <head><title>Hello World</title> <style> .style1{ width:60px;ma ...