bzoj1588 splay模板
来源:互联网 发布:电脑编程c语言的软件 编辑:程序博客网 时间:2024/06/05 00:13
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#include<stack>#include<queue>#include<vector>#include<set>#include<map>#include<string>using namespace std;typedef long long ll;typedef pair<int,int>P;const int INF=0x3f3f3f3f;const ll INFF=0x3f3f3f3f3f3f3f3f;const double pi=acos(-1.0);const double eps=1e-9;const int maxn=33333;int fa[maxn],ch[maxn][2],root,k[maxn],ind=1;void rotate(int p){ int q=fa[p],y=fa[q],x=ch[q][1]==p; ch[q][x]=ch[p][x^1]; fa[ch[q][x]]=q; ch[p][x^1]=q; fa[q]=p; fa[p]=y; if(y) { if(ch[y][0]==q) ch[y][0]=p; else if(ch[y][1]==q) ch[y][1]=p; }}void splay(int x){ for(int y;y=fa[x];rotate(x)) { if(fa[y]) { rotate((x==ch[y][0])==(y==ch[fa[y]][0])?y:x); } } root=x;}void insert(int x,int v){ int y; while(1) { y=ch[x][k[x]<v]; if(!y) { y=++ind; k[y]=v; ch[y][0]=ch[y][1]=0; fa[y]=x; ch[x][k[x]<v]=y; break; } x=y; } splay(y);}int pre(int x){ int tmp=ch[x][0]; while(ch[tmp][1]) tmp=ch[tmp][1]; return k[tmp];}int suc(int x){ int tmp=ch[x][1]; while(ch[tmp][0]) tmp=ch[tmp][0]; return k[tmp];}int main(){ int n,t,ans=0; scanf("%d",&n); if(scanf("%d",&t)==EOF) t=0; root=1;k[root]=t; ch[root][0]=ch[root][1]=0; fa[root]=0; ans=t; insert(root,INF); insert(root,-INF); for(int i=2;i<=n;i++) { if(scanf("%d",&t)==EOF)t=0; insert(root,t); int a=pre(root); int b=suc(root); ans+=min(t-a,b-t); } printf("%d\n",ans); return 0;}
阅读全文
1 0
- bzoj1588 splay模板
- bzoj1588.营业额统计(splay)
- 【BZOJ1588】【HNOI2002】营业额统计 splay
- bzoj1588 [HNOI2002]营业额统计 (Splay)
- [BZOJ1588]HNOI2002营业额统计|splay
- 【bzoj1588】[HNOI2002]营业额统计 Splay
- 【bzoj1588】【HNOI2002】【营业额统计】【splay】
- bzoj1588 [HNOI2002]营业额统计 splay
- [Bzoj1588][HNOI2002]营业额统计 (Treap|Splay)
- bzoj1588: [HNOI2002]营业额统计 SBT&&Splay
- [BZOJ1588][HNOI2002][Treap][Splay]营业额统计[水题]
- bzoj1588 [HNOI2002]营业额统计 裸splay
- 【Tyvj1185】【codevs1296】【BZOJ1588】营业额统计,Splay练习
- [BZOJ1588]营业额统计(平衡树splay)
- 自己的splay模版(bzoj1588)
- SPLAY模板
- (模板)splay
- splay模板
- linux011中调度算法
- AppScan8.0简单扫描
- linux服务器接口测试命令
- 2、PID基础知识
- 教你关闭一个不活动的或者空闲的SSH会话
- bzoj1588 splay模板
- mysql lock table/unlock table 表锁/解锁
- 电脑使用小经验系列(4)
- 让你彻底明白JAVA中堆与栈的区别
- 队列基础
- easyui-tree数据读取与保存
- python 文件操作
- 通过nodejs自动创建前端工程文件
- Shiro框架简介(一)