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 ...
随机推荐
- Ajax ContentType 列表
".*"="application/octet-stream" ".001"="application/x-001" & ...
- Ado.Net实现简易(省、市、县)三级联动查询,还附加Access数据
小弟在博客园驻园不久,初来咋到:将最近写的小程序附上,希望各位大牛们吐槽:激发对程序员围观的童鞋们,赶紧加入IT行业,如果你在上海那简称就是SHIT,哈哈题外话,以下开始切入正题: 坐公交车是旁边偶遇 ...
- c# 应用程序部署发布
转自:http://blog.csdn.net/chenyujing1234/article/details/7558185 最近做了C#软件,发布给客户用时,发现客户运行不起来,原因是客户电脑上没有 ...
- 2729:[HNOI2012]排队 - BZOJ
题目描述 Description某中学有n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人 ...
- HTML特殊转义字符对照表
字符 十进制 转义字符 字符 十进制 转义字符 字符 十进制 转义字符 ? ¡ ¡ Á Á Á á á á ¢ ¢ ¢ Â Â ˆ â â £ £ £ Ã Ã Ã ã ã ã ¤ ¤ ¤ Ä Ä &a ...
- z-index兼容问题:关于ie6/7下的z-index
z-index这个属性其实在挺多地方都会用到,在百度上搜索也有大量关于z-index的篇幅去阐述这个属性,特别是在ie6下的z-index处理有更多的相关文章,本文就不再围绕z-index这一属性的基 ...
- 利用Multi-Probe LSH构建ANN高维索引
感谢大神们的无私奉献精神........因此笔者要坚持开源,专注开源,开源就像在HPU的考试中不像其他人作弊一样,长远来看,会有巨大收获. 一.背景介绍 1.1 相似性搜索简介 高维相似性搜索在音频. ...
- NOI 国家集训队论文集
鉴于大家都在找这些神牛的论文.我就转载了这篇论文合集 国家集训队论文分类 组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用> 2003 - 许智磊:<浅谈补集转化 ...
- java 几种常见的定时器
今天闲着没事就总结了一下在java中常用的几种定时器. 主要有3种java.util.Timer, ScheduledExecutorService和quartz 一.Timer 举个简单例子.每隔5 ...
- POJ 1702
#include <iostream> #include <cmath> #define MAXN 100 using namespace std; void fun(int ...