cogs1533 [HNOI2002]营业额统计


啦啦啦啦

不维护区间的平衡树题都是树状数组+二分练手题!

不会的参考我的普通平衡树的多种神奇解法之BIT+二分答案

和上一篇博文完全一样2333

另外:goto语句只要不乱用还是挺好用的

// It is made by XZZ
#include<cstdio>
#include<algorithm>
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
#define il inline
#define rg register
#define vd void
typedef long long ll;
const int maxn=(1<<15)+4;
int n;
//BIT begin
int t[maxn],tot;
#define lb(o) (o&-o)
il vd Appear(int p){++p;while(p<=tot)++t[p],p+=lb(p);}
il vd Disappear(int p){++p;while(p<=tot)--t[p],p+=lb(p);}
il int Query(int p){int ret=0;while(p)ret+=t[p],p-=lb(p);return ret;}
//BIT end.
il int pre(int p){
int mid,l=1,r=p-1,k=Query(p);
while(l<r){
mid=(l+r)>>1;
if(Query(mid+1)==k)r=mid;
else l=mid+1;
}return l;
}
il int nxt(int p){
int mid,l=p+1,r=tot,k=Query(p+1);
while(l<r){
mid=(l+r)>>1;
if(Query(mid+1)^k)r=mid;
else l=mid+1;
}return l;
}
int s[maxn];ll data[maxn];
bool yes[maxn];
int main(){
scanf("%d",&n);
rep(i,1,n){
if(scanf("%d",&s[i])^1)s[i]=0;
data[i]=s[i];
}
sort(data+1,data+n+1);
tot=unique(data+1,data+n+1)-data-1;
rep(i,1,n)s[i]=lower_bound(data+1,data+tot+1,s[i])-data;
ll ans=data[s[1]];
data[0]=-1e14;
++tot;
Appear(s[1]);yes[s[1]]=1;
rep(i,2,n){
static int a,b;
a=b=0;
if(yes[s[i]])goto end;
yes[s[i]]=1;
if(Query(s[i]))a=pre(s[i]);
if(Query(s[i])^(i-1))b=nxt(s[i]);
ans+=min(abs(data[a]-data[s[i]]),abs(data[b]-data[s[i]]));
end:Appear(s[i]);
}
printf("%lld\n",ans);
return 0;
}

cogs1533 [HNOI2002]营业额统计的更多相关文章

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

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

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

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

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

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

  4. BZOJ1588 HNOI2002 营业额统计 [Splay入门题]

    [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 4128  Solved: 1305 Description 营业额统计 ...

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

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

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

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

  7. bzoj1588 [HNOI2002]营业额统计(Treap)

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

  8. 1588: [HNOI2002]营业额统计

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 9203  Solved: 3097[Submit][Stat ...

  9. 【链表】BZOJ1588: [HNOI2002]营业额统计

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

随机推荐

  1. Controller如何写的更简化

    Controller层相当于MVC中的C,也是安卓或者前端请求的接口. 首先说Controller为什么需要写的更加简化? 第一.Controller是不能复用的: 第二.即便是将Controller ...

  2. iOS获取当前连接的wifi信息

    导入框架CaptiveNetwork #import <SystemConfiguration/CaptiveNetwork.h> 获取当前连接的wifi信息 // 只能获取当前的SSID ...

  3. 基于Azure Blob冷存储的数据压缩备份总结

    基于上一篇的压缩算法对比分析报告,选择了LZ4算法的普通模式,其测试压缩率为28%,20G压缩时间为256s,估计1T的冷备时间为3.5h. 接下来,将23T的HBase历史数据进行了压缩冷备,压缩后 ...

  4. [TJOI]2013 最长上升子序列

    这个题据说是Splay,或者说是平衡树的模板题,但是我还是不会做--唉-- \(\color{red}{Description}\) 给定一个序列,初始为空.现在我们将\(1\)到\(N\)的数字插入 ...

  5. UVA - 11987 Almost Union-Find(带删除的并查集)

    I hope you know the beautiful Union-Find structure. In this problem, you’re to implement something s ...

  6. 如何导出SHP文件中的点坐标?(ArcGIS10)

    行政区域坐标,网上流传较广的版本是包括海域的,假如你仅仅想要把陆地边界绘出,那么怎么办呢? 现在讲一下用arcgis 10从shp线.面文件中获取对应区域的坐标呢?(点图层忽略第一步) 首先用在arc ...

  7. Unity Loding白屏

    卡loading很多时候是由于网络原因造成的,你可以尝试断网,进入离线模式.如果使用VPN也可以先关闭使用,部分Vpn的配置也会导致该问题出现.最后可以查看一下防火墙的设置.

  8. java SSM 框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码

    A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技 ...

  9. Oracle分析函数巧妙使用

    在 Oracle中使用Sql必须弄懂分析函数 Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) 6 Or ...

  10. 【leetcode】804

    import java.util.*; import java.lang.*; public class Test{ public static int fun_solve(String[] word ...