BZOJ1588: [HNOI2002]营业额统计
来源:互联网 发布:linux系统查看cpu主频 编辑:程序博客网 时间:2024/05/20 22:02
题目链接
平衡树插入和查询。
【代码】
#include <cstdio>#include <iostream>#include <queue>#include <vector>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#define N 50005#define M 200005#define INF 1e9+1using namespace std;typedef long long ll;typedef pair<ll,ll> pa;int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}int n,mn,mx,rt,sz,ans;int son[N][2],fa[N],num[N];void Ask_Min(int k,int x){ if(!k) return; if(num[k]<=x) { mn=num[k]; Ask_Min(son[k][1],x); } else Ask_Min(son[k][0],x);}void Ask_Max(int k,int x){ if(!k) return; if(num[k]>=x) { mx=num[k]; Ask_Max(son[k][0],x); } else Ask_Max(son[k][1],x);}void Rotate(int x,int &k){ int y=fa[x],z=fa[y],l,r; l=(son[y][0]!=x);r=l^1; if(y==k) k=x; else son[z][son[z][0]!=y]=x; fa[x]=z;fa[y]=x;fa[son[x][r]]=y; son[y][l]=son[x][r];son[x][r]=y;}void Splay(int x,int &k){ while(x!=k) { int y=fa[x],z=fa[y]; if(y!=k) { if((son[z][0]==y)^(son[y][0]==x)) Rotate(x,k); else Rotate(y,k); } Rotate(x,k); }}void Insert(int &k,int x,int Last){ if(!k) { k=++sz;fa[k]=Last; num[k]=x;Splay(k,rt); return; } if(x<num[k]) Insert(son[k][0],x,k); else Insert(son[k][1],x,k);}int main(){ n=read(); for(int i=1;i<=n;i++) { static int x; x=read(); mn=-INF,mx=INF; Ask_Min(rt,x); Ask_Max(rt,x); ans+=(i==1)?x:min(x-mn,mx-x); Insert(rt,x,0); } printf("%d\n",ans); return 0;}
0 0
- hnoi2002 bzoj1588 营业额统计
- [BZOJ1588][HNOI2002]营业额统计
- bzoj1588【HNOI2002】营业额统计
- BZOJ1588: [HNOI2002]营业额统计
- bzoj1588[HNOI2002]营业额统计
- 【bzoj1588】[HNOI2002]营业额统计
- 【BZOJ1588】【HNOI2002】营业额统计
- [bzoj1588][HNOI2002]营业额统计
- bzoj1588: [HNOI2002]营业额统计
- BZOJ1588: [HNOI2002]营业额统计
- bzoj1588: [HNOI2002]营业额统计
- BZOJ1588[HNOI2002]营业额统计
- bzoj1588 [HNOI2002]营业额统计
- bzoj1588 [HNOI2002]营业额统计
- BZOJ1588: [HNOI2002]营业额统计
- bzoj1588: [HNOI2002]营业额统计
- 【BZOJ1588】【HNOI2002】营业额统计 splay
- bzoj1588 [HNOI2002]营业额统计 (Splay)
- 关于导航栏背景图要注意的一点
- Python标准模块——os
- Python3中获取文件夹内容的几种方式
- Search a 2D Matrix
- 用Shader绘制自由多边形
- BZOJ1588: [HNOI2002]营业额统计
- 快速排序
- Python标准模块——glob
- Android内存溢出与优化(一)——不要随意new对象
- 基于visual studio 2015的Qt平台搭建方案
- <Principles of fMRI 1>课程笔记4--图像K空间理解
- AngularJS ui-router (嵌套路由)
- Python标准模块——tempfile
- 隐藏单元(三)