非旋转treap 模板
来源:互联网 发布:excel2013解密软件 编辑:程序博客网 时间:2024/06/14 05:23
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<ctime>#include<cstdlib>#include<utility>using namespace std;typedef long long ll;typedef pair<int,int> pii;struct node{ int ls,rs; int k,v,s; node() { ls=rs=k=v=s=0; }};node a[1000010];int cnt;int nownode(int v){ cnt++; a[cnt].s=1; a[cnt].v=v; a[cnt].k=rand()*100+rand(); return cnt;}int st[100010];int top;int c[100010];int build(int n){ top=0; int i; for(i=1;i<=n;i++) { int x=nownode(c[i]); while(top&&a[st[top]].k>a[x].k) { a[x].ls=st[top]; top--; } if(top) a[st[top]].rs=x; st[++top]=x; } return st[1];}pii split(int p,int v){ if(!p) return pii(); pii s; if(a[p].v<=v) { s=split(a[p].rs,v); a[p].rs=s.first; s.first=p; return s; } else { s=split(a[p].ls,v); a[p].ls=s.second; s.second=p; return s; }}int merge(int p1,int p2){ if(!p1) return p2; if(!p2) return p1; if(a[p1].k<a[p2].k) { a[p1].rs=merge(a[p1].rs,p2); return p1; } else { a[p2].ls=merge(p1,a[p2].ls); return p2; } return 0;}void dfs(int x){ if(a[x].ls) dfs(a[x].ls); printf("%d ",a[x].v); if(a[x].rs) dfs(a[x].rs);}int main(){ srand(time(0)); int n; scanf("%d",&n); int i; for(i=1;i<=n;i++) scanf("%d",&c[i]); cnt=0; int rt=build(n); dfs(rt);}
阅读全文
0 0
- 非旋转treap模板
- 【模板】非旋转Treap
- 非旋转treap模板
- 非旋转treap 模板
- 非旋转Treap
- 非旋转Treap-总结
- Treap模板(旋转)
- 非旋转treap模板(fhq treap)(洛谷3369,BZOJ3224)
- 【模板】基于旋转的Treap
- 【Treap/非旋转Treap】BZOJ3224 [Tyvj1728]普通平衡树
- 【Treap/非旋转Treap】BZOJ1503 [NOI2004]郁闷的出纳员
- [CodeVS1343]蚱蜢 非旋转式Treap
- bzoj 3224(非旋转treap)
- bzoj 3223(非旋转treap/splay)
- 非旋转 Treap 学习笔记(一)
- 非旋转 Treap 学习笔记(二)
- 可持久化(非旋转式)treap 学习记录
- 【Memphis】非旋转Treap及可持久化[Merge,Split]
- android 关于drawable那些事
- python 时间差的计算
- 矩阵分析与应用(一)——集合的基本运算和内积空间
- vs2015安装
- (数学)HDU 6045 Is Derek lying?
- 非旋转treap 模板
- 用js写一个选项卡
- Mysql语句总结(1)
- FOJ--1046--Tempter of the Bone(dfs+奇偶剪枝)
- 动态规划(Hearthstone,HDU 5816)
- Faulty Odometer HDU
- 在 Linux 上配置 mongodb
- Banner简单使用
- git 拉取远程代码