fhq_treap || BZOJ 3224: Tyvj 1728 普通平衡树 || Luogu P3369 【模板】普通平衡树
题面:【模板】普通平衡树
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
using namespace std;
inline int rd(){
int x=,f=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return f*x;
}
const int maxn=(2e5)+;
int N,chd[maxn][],a,o,val[maxn],rt,x,y,z,g,pr[maxn],tot=,siz[maxn];
inline int New_node(int a){
val[++tot]=a;
pr[tot]=rand();
siz[tot]=;
return tot;
}
inline void Pushup(int a){
siz[a]=siz[chd[a][]]+siz[chd[a][]]+;
return;
}
inline void Split(int now,int k,int &x,int &y){
if(!now){x=y=; return;}
if(val[now]<=k){
x=now;
Split(chd[now][],k,chd[now][],y);
}
else{
y=now;
Split(chd[now][],k,x,chd[now][]);
}
Pushup(now);
return;
}
inline int Merge(int a,int b){
if(!a||!b)return (a+b);
if(pr[a]<pr[b]){
chd[a][]=Merge(chd[a][],b);
Pushup(a);
return a;
}
else{
chd[b][]=Merge(a,chd[b][]);
Pushup(b);
return b;
}
}
inline int Kth(int now,int k){
while(now){
if(k<=siz[chd[now][]])now=chd[now][];
else if(k==siz[chd[now][]]+)return now;
else k=k-siz[chd[now][]]-,now=chd[now][];
}
return now;
}
int main(){
srand();
N=rd();
rt=;
while(N--){
o=rd();a=rd();
if(o==){
Split(rt,a,x,y);
rt=Merge(Merge(x,New_node(a)),y);
}
else if(o==){
Split(rt,a,x,z);
Split(x,a-,x,y);
rt=Merge(Merge(x,Merge(chd[y][],chd[y][])),z);
}
else if(o==){
Split(rt,a-,x,y);
printf("%d\n",siz[x]+);
rt=Merge(x,y);
}
else if(o==){
printf("%d\n",val[Kth(rt,a)]);
}
else if(o==){
Split(rt,a-,x,y);
printf("%d\n",val[Kth(x,siz[x])]);
rt=Merge(x,y);
}
else{//o==6
Split(rt,a,x,y);
printf("%d\n",val[Kth(y,)]);
rt=Merge(x,y);
}
}
return ;
}
By:AlenaNuna
fhq_treap || BZOJ 3224: Tyvj 1728 普通平衡树 || Luogu P3369 【模板】普通平衡树的更多相关文章
- BZOJ 3224: Tyvj 1728 普通平衡树
3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 9629 Solved: 4091[Submit][Sta ...
- BZOJ 3224 TYVJ 1728 普通平衡树 [Treap树模板]
3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 7390 Solved: 3122 [Submit][S ...
- BZOJ 3224: Tyvj 1728 普通平衡树 treap
3224: Tyvj 1728 普通平衡树 Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除 ...
- BZOJ 3224: Tyvj 1728 普通平衡树 vector
3224: Tyvj 1728 普通平衡树 Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除 ...
- BZOJ 3224: Tyvj 1728 普通平衡树(BST)
treap,算是模板题了...我中间还一次交错题... -------------------------------------------------------------------- #in ...
- BZOJ 3224: Tyvj 1728 普通平衡树 or 洛谷 P3369 【模板】普通平衡树-Splay树模板题
3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 22483 Solved: 10130[Submit][S ...
- BZOJ 3224 Tyvj 1728 普通平衡树模板
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3224 题目大意: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以 ...
- bzoj 3224: Tyvj 1728 普通平衡树 && loj 104 普通平衡树 (splay树)
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3224 思路: splay树模板题: 推荐博客:https://blog.csdn.ne ...
- bzoj 3224/Tyvj 1728 普通平衡树(splay)
Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数 ...
随机推荐
- Gridview中显示的值根据数据库中带出的值作更改
前台页面对Gridview增加事件 OnRowDataBound="GridView1_RowDataBound"protected void GridView1_RowDataB ...
- 一、Python环境的搭建
1.python官方下载地址:https://www.python.org/:python现在有两个版本:python2.7.x和python3.x 2.安装:一路下一步,默认安装 3.配置环境变量: ...
- Factory Kit【其他模式】
Factory Kit public class FactoryKit { /** * Factory Kit:它定义了一个包含不可变内容的工厂,并使用独立的构建器和工厂接口来处理对象的创建. */ ...
- C# App.config全攻略
读语句: String str = ConfigurationManager.AppSettings["DemoKey"]; 写语句: Configuration ...
- postman通过引入外部文件实现参数化
postman可通过引入外部文件进行参数化 目录 1.准备好接口信息 2.设置 1.准备好接口信息 这里的usr和psw是要参数化的对象 2.设置 文件准备 添加文件,并设置好循环次数即可
- Delphi加密解密算法
// 加密方法一(通过密钥加密解密)function EncryptString(Source, Key: string): string;function UnEncryptString(Sourc ...
- 【LeetCode】121、买卖股票的最佳时机
Best Time to Buy and Sell Stock 题目等级:Easy 题目描述: Say you have an array for which the ith element is t ...
- Python-自定义函数-参数
一.自定义函数参数 1.种类 (1)位置参数 "x"就是位置参数 #!/usr/bin/env python # -*- coding: utf-8 -*- #author: di ...
- [转帖]22款让Kubernetes锦上添花的开源工具
22款让Kubernetes锦上添花的开源工具 http://soft.zhiding.cn/software_zone/2019/0506/3117650.shtml 找时间尝试一下. 至顶网软件频 ...
- Tensorflow模型保存与加载
在使用Tensorflow时,我们经常要将以训练好的模型保存到本地或者使用别人已训练好的模型,因此,作此笔记记录下来. TensorFlow通过tf.train.Saver类实现神经网络模型的保存和提 ...