这个也是板子题吧,很水,求前驱后继即可
/*
插入,求前驱和后继
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define MAXN 1000000
int ch[MAXN][],f[MAXN],size[MAXN],cnt[MAXN],key[MAXN];
int sz,root;
inline void clear(int x){ch[x][]=ch[x][]=f[x]=size[x]=cnt[x]=key[x]=;}
inline bool get(int x){return ch[f[x]][]==x;}//判断x是左儿子还是右儿子
inline void update(int x){
if(x){
size[x]=cnt[x];
if(ch[x][]) size[x]+=size[ch[x][]];
if(ch[x][]) size[x]+=size[ch[x][]];
}
}
inline void rotate(int x){
int old=f[x],oldf=f[old],whichx=get(x);
ch[old][whichx]=ch[x][whichx^];
f[ch[old][whichx]]=old; ch[x][whichx^]=old;f[old]=x; f[x]=oldf;
if(oldf) ch[oldf][ch[oldf][]==old]=x;
update(old);update(x);
}
inline void splay(int x){
for(int fa;fa=f[x];rotate(x))
if(f[fa]) rotate((get(x)==get(fa))?fa:x);
root=x;
}
inline void insert(int x){
if(root==){root=++sz;ch[sz][]=ch[sz][]=f[sz]=;size[sz]=cnt[sz]=;key[sz]=x;return;}
int now=root,fa=;
while(){
if(x==key[now]){cnt[now]++;update(now);update(fa);splay(now);break;}
fa=now;now=ch[now][key[now]<x];
if(now==){
sz++;ch[sz][]=ch[sz][]=;
f[sz]=fa;size[sz]=cnt[sz]=;
ch[fa][key[fa]<x]=sz;
key[sz]=x;//新建节点
update(fa);splay(sz);break;
}
}
}
inline int find(int x){//寻找x所在位置
int now=root,ans=;
while(){
if(x<key[now]) now=ch[now][];
else {
ans+=(ch[now][]?size[ch[now][]]:);
if(x==key[now]){splay(now);return ans+;}
ans+=cnt[now];
now=ch[now][];
}
}
}
inline int findx(int x){//找第x名的值
int now=root;
while(){
if(ch[now][] && x<=size[ch[now][]]) now=ch[now][];
else {
int temp=(ch[now][]?size[ch[now][]]:)+cnt[now];
if(x<=temp) return key[now];
x-=temp;now=ch[now][];
}
}
}
inline int pre(){int now=ch[root][];while(ch[now][]) now=ch[now][];return now;}
inline int next(){int now=ch[root][];while(ch[now][]) now=ch[now][];return now;}
int main(){
int n,a;
while(scanf("%d",&n)==){
int ans=;
for(int i=;i<n;i++){
scanf("%d",&a);
if(i==) {insert(a);ans+=a;}
else {
int tmp=;
insert(a);
if(cnt[root]>) continue;
if(ch[root][])tmp=min(tmp,key[next()]-a);
if(ch[root][])tmp=min(tmp,a-key[pre()]);
ans+=tmp;
}
}
printf("%d\n",ans);
}
return ;
}

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

  1. SET || BZOJ 1588: [HNOI2002]营业额统计 || Luogu P2234 [HNOI2002]营业额统计

    题面:P2234 [HNOI2002]营业额统计 题解:随便写写 注意:cmath中abs函数返回的是一个浮点数,在bzoj上会ce 代码: #include<cstdio> #inclu ...

  2. BZOJ 1588: [HNOI2002]营业额统计 双向链表

    BZOJ 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 512 MBSubmit: 9619  Solved: 3287 题目连接 ht ...

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

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

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

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

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

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

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

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

  7. BZOJ 1588 营业额统计

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

  8. 数据结构:(平衡树,链表)BZOJ 1588[HNOI2002]营业额统计

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

  9. (HYSBZ)BZOJ 1588 营业额统计

    营业额统计 Time Limit: 5000MS   Memory Limit: 165888KB   64bit IO Format: %lld & %llu Description 营业额 ...

随机推荐

  1. python---一个简单的socket

    server端: 1 创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type )      #family参数代表地址家族,可为 ...

  2. Window配置环境变量

    拿Java为例,讲一下怎么配置环境变量使得javac可以在全局被调用: 1.添加环境变量 例如我们的Java下载在了:D:\Java\v1.8 我们就到环境变量那添加一个例如叫“Java_path”的 ...

  3. 函数和常用模块【day04】:函数介绍(一)

    本节内容 1.函数介绍 2.函数定义 3.为什么要使用函数 一.介绍 在我们以往的学习编程的过程当中,碰到的最多的两张编程方式或者说编程方法:面向过程和面向对象.其实不管是哪一种,其实都是编程的方法论 ...

  4. C# 新特性

    1.字符串中调用参数 DataTable dt= sqlHelper.SqlConnectionInformation(connstr,sql); string rows = JsonConvert. ...

  5. 阿里云服务器安装SQLServer本地无法远程访问

    新买的阿里云服务器,安装上sqlserver2012,本机连接测试没有问题,但是回到本地,使用ip远程连接报错. 尝试了网上各种办法,都是失败.最后找到原因,原来在阿里云的控制台上有设置: 首先进入安 ...

  6. 五、u-boot 启动流程---u-boot.lds

    5.1 u-boot.lds  链接脚本分析 uboot 编译出来的第一个链接脚本就是执行 u-boot.lds 链接脚本,去掉里面无用的和没有定义的,进行分析. /* 配置头文件,自动生成的,包含芯 ...

  7. 不同数据库下的web.config中数据库连接字符串

    <connectionStrings> <add name="OADBConnectionString" connectionString="Data ...

  8. .net 重新注册

    今天同事问 一个IIS 的监控站点 .net 出现问题:对于windows 一般都停留在重启生效思想:然并没有生效: 于是建议重新注册.NET : 一般出现原因: 在默认安装路径 重启注册: 默认的安 ...

  9. 数据库 之 E-R设计感想

    1.实体与实体之间的关系,在许多情况下,可以将其实体化为实体(弱实体),例如:员工租赁宿舍,可以将租赁弱实体化为实体(具有唯一主键ID) 2.一些具有特征的关系可以(弱)实体化为实体 3.实体里面可以 ...

  10. F - Set of Strings

    You are given a string q. A sequence of k strings s1, s2, ..., sk is called beautiful, if the concat ...