题目传送门

分析题意可得,希望求与每个数最相近的数。

二叉搜索树的简单题,因为可能被卡成O(N),考虑平衡树。

因为Treap较简单,此处用Treap编写代码。

code:

#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std; char tc()
{
static char fl[],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,,,stdin),A==B)?EOF:*A++;
} int read()
{
char c;while(c=tc(),(c<''||c>'')&&c!='-');int x=,y=;c=='-'?y=-:x=c-'';
while(c=tc(),c>=''&&c<='')x=x*+c-'';
return x*y;
} int x,ans;
int N,v[],tp[][],r[],cnt,rt; int rotate(int &now,int x)
{
int k=tp[now][x];
tp[now][x]=tp[k][x^];
tp[k][x^]=now;
now=k;
} int pre(int o,int x)
{
int res=2e9;
while(o){
res=min(res,abs(v[o]-x));
o=tp[o][v[o]<x];
}
return res;
} void insert(int &now,int x)
{
if(!now){
now=++cnt;
v[now]=x;r[now]=rand();
return ;
}
if(x==v[now])return ;
int to=x>v[now];
insert(tp[now][to],x);
if(r[now]<r[tp[now][to]])rotate(now,to);
} main()
{
// freopen("x.txt","r",stdin);
N=read();
for(int i=;i<=N;i++){
x=read();
if(i==)ans+=x;
else ans+=pre(rt,x);
insert(rt,x);
}
printf("%d",ans);
return ;
}

BZOJ1588_营业额统计_KEY的更多相关文章

  1. BZOJ1588: [HNOI2002]营业额统计[BST]

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 14151  Solved: 5366[Submit][Sta ...

  2. 【Treap】bzoj1588-HNOI2002营业额统计

    一.题目 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司 ...

  3. 营业额统计(SBT)

    营业额统计(SBT) #include<cstdio> #include<cstring> #include<string> #include<cstdlib ...

  4. NOI 2002 营业额统计 (splay or fhq treap)

    Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...

  5. BZOJ 1588: [HNOI2002]营业额统计

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 14396  Solved: 5521[Submit][Sta ...

  6. 营业额统计(bzoj1588)

    Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...

  7. BZOJ 1588: [HNOI2002]营业额统计 双向链表 / splay / treap

    1588: [HNOI2002]营业额统计 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger ...

  8. Splay树-Codevs 1296 营业额统计

    Codevs 1296 营业额统计 题目描述 Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司 ...

  9. 【BZOJ-1588】营业额统计 Splay

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 12485  Solved: 4508[Submit][Sta ...

随机推荐

  1. Docker技术三大要点:cgroup, namespace和unionFS的理解

    www.docker.com的网页有这样一张有意思的动画: 从这张gif图片,我们不难看出Docker网站想传达这样一条信息, 使用Docker加速了build,ship和run的过程. Docker ...

  2. Shell,Bash,等脚本学习(有区别)

    二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.   整数比较   -eq        等于,如:if [ "$a" -eq "$b" ] -n ...

  3. angular里forRoot的作用

    模块A是这样定义的 @NgModule({ providers: [AService], declarations: [ TitleComponent ], exports: [ TitleCompo ...

  4. .NET Core学习之路

    1.NET Core环境搭建 安装.NET Core: .NET Core 包括.NET Core Runtime 和 .NET Core SDK: NET Core = 应用运行依赖的 .NET C ...

  5. 记录两篇关于linux设置ssh登录 和NAT网络模式下访问

    https://blog.csdn.net/java_dotar_01/article/details/76942563 https://blog.csdn.net/jiuduan2009/artic ...

  6. 由memcpy内存越界引发的问题 && delete 和 delete []的真正区别

    今天遇到了一个问题,在程序运行到某处总会报访问到错误的地址的错误,而且每次报错的堆栈还都不一样,排查了一段时间,发现是memcpy这里出了错 ]; memset(d, , data.size() * ...

  7. 51nod 1019 逆序数(逆序数+离散化)

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数.   如2 4 3 1中,2 1,4 3,4 1,3 1是 ...

  8. Libevent源码学习笔记一:event2/event.h

    一.libevent标准使用方法: 每个程序使用Libevent必须include <event2/event.h> 头文件,并 传给 -levent  链接器.如果只是想使用主要的eve ...

  9. ASP.NET SingalR 点对点聊天实现思路总结

    前一段时间写了一个简单的聊天室,是群聊的方式.博客地址:http://www.cnblogs.com/panzi/p/4980346.html.还有一种需求就是常见的尤其是培训机构的主页面,经常会有1 ...

  10. Jenkins+maven(testng)项目(本地项目配置)

    一.前提: 1. Jenkins下载安装. 2. testng的Maven项目. 二.检测: maven项目自身配置及检测. 1. POM.XML配置文件增加: <build> <p ...