P3369 【模板】普通平衡树(Treap/SBT)(pb_ds版)
题目描述
您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:
- 插入x数 
- 删除x数(若有多个相同的数,因只删除一个) 
- 查询x数的排名(若有多个相同的数,因输出最小的排名) 
- 查询排名为x的数 
- 求x的前驱(前驱定义为小于x,且最大的数) 
- 求x的后继(后继定义为大于x,且最小的数)
输入输出格式
输入格式:
第一行为n,表示操作的个数,下面n行每行有两个数opt和x,opt表示操作的序号(1<=opt<=6)
输出格式:
对于操作3,4,5,6每行输出一个数,表示对应答案
输入输出样例
10
1 106465
4 1
1 317721
1 460929
1 644985
1 84185
1 89851
6 81968
1 492737
5 493598
106465
84185
492737
说明
时空限制:1000ms,128M
1.n的数据范围:n<=100000
2.每个数的数据范围:[-1e7,1e7]
来源:Tyvj1728 原名:普通平衡树
在此鸣谢
颓废的时候闲来无事研究一下pb_ds,,
想象一下在考场上别人花n个小时写平衡树调平衡树,而你五分钟就秒了的快感
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/assoc_container.hpp>
#include<algorithm>
#define lli long long
using namespace std;
using namespace __gnu_pbds;
void read(lli &n)
{
char c='+';lli x=;bool flag=;
while(c<''||c>''){c=getchar();if(c=='-')flag=;}
while(c>=''&&c<=''){x=x*+(c-);c=getchar();}
flag==?n=-x:n=x;
}
tree<lli,null_type,std::less<lli>,splay_tree_tag,tree_order_statistics_node_update>st;
int main()
{
ios::sync_with_stdio();
lli T;
lli ans,x,y;
cin>>T;
for(lli i=;i<=T;i++)
{ //read(x);read(y);
cin>>x>>y;
if(x==) st.insert((y<<)+i);
else if(x==)st.erase(st.lower_bound(y<<));
else if(x==)printf("%lld\n",st.order_of_key(y<<)+);
else
{
if(x==)ans=*st.find_by_order(y-);
if(x==)ans=*--st.lower_bound(y<<);
if(x==)ans=*st.lower_bound((y+)<<);
printf("%lld\n",ans>>);
}
}
return ;
}
P3369 【模板】普通平衡树(Treap/SBT)(pb_ds版)的更多相关文章
- luoguP3369[模板]普通平衡树(Treap/SBT)  题解
		链接一下题目:luoguP3369[模板]普通平衡树(Treap/SBT) 平衡树解析 #include<iostream> #include<cstdlib> #includ ... 
- 【模板】平衡树——Treap和Splay
		二叉搜索树($BST$):一棵带权二叉树,满足左子树的权值均小于根节点的权值,右子树的权值均大于根节点的权值.且左右子树也分别是二叉搜索树.(如下) $BST$的作用:维护一个有序数列,支持插入$x$ ... 
- [luogu P3369]【模板】普通平衡树(Treap/SBT)
		[luogu P3369][模板]普通平衡树(Treap/SBT) 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除x数(若有多个相同的数,因只删 ... 
- 洛谷P3369 【模板】普通平衡树(Treap/SBT)
		洛谷P3369 [模板]普通平衡树(Treap/SBT) 平衡树,一种其妙的数据结构 题目传送门 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除 ... 
- 数组splay ------ luogu P3369 【模板】普通平衡树(Treap/SBT)
		二次联通门 : luogu P3369 [模板]普通平衡树(Treap/SBT) #include <cstdio> #define Max 100005 #define Inline _ ... 
- 替罪羊树 ------ luogu P3369 【模板】普通平衡树(Treap/SBT)
		二次联通门 : luogu P3369 [模板]普通平衡树(Treap/SBT) 闲的没事,把各种平衡树都写写 比较比较... 下面是替罪羊树 #include <cstdio> #inc ... 
- 红黑树 ------ luogu P3369 【模板】普通平衡树(Treap/SBT)
		二次联通门 : luogu P3369 [模板]普通平衡树(Treap/SBT) 近几天闲来无事...就把各种平衡树都写了一下... 下面是红黑树(Red Black Tree) 喜闻乐见拿到了luo ... 
- AC日记——【模板】普通平衡树(Treap/SBT) 洛谷 P3369
		[模板]普通平衡树(Treap/SBT) 思路: 劳资敲了一个多星期: 劳资终于a了: 劳资一直不a是因为一个小错误: 劳资最后看的模板: 劳资现在很愤怒: 劳资不想谈思路!!! 来,上代码: #in ... 
- 题解 P3369 【【模板】普通平衡树(Treap/SBT)】
		STL真是个好东西. 最近在看pb_ds库及vector和set的用法,就想用这三种操作来实现一下普通平衡树,结果pb_ds中的rbtree不支持重复值,而本蒟蒻也看不懂不懂各大佬用pb_ds的实现, ... 
- P3369 【模板】普通平衡树 Treap
		P3369 [模板]普通平衡树(Treap/SBT) 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询 ... 
随机推荐
- linux下解决非本机访问出现的提示
			安装完毕之后发现无法用IP访问,出现以下提示 Access forbidden! New XAMPP security concept: Access to the requested directo ... 
- Spark RDD概念学习系列之Pair RDD的transformation操作
			不多说,直接上干货! Pair RDD的transformation操作 Pair RDD转换操作1 Pair RDD 可以使用所有标准RDD 上转化操作,还提供了特有的转换操作. Pair RDD转 ... 
- 如何版本化你的API?--转
			原文地址:http://www.infoq.com/cn/news/2017/09/How-versioning-API 如何版本化API需要考虑各种实际业务场景,但是一个完备的API应该是: 和客户 ... 
- SQLiteHelp
			using System; using System.Collections.Generic; using System.Text; using System.Data.SQLite; using S ... 
- Error:Execution failed for task ':app:processDebugManifest'. 合并冲突
			1. Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed : Attrib ... 
- JSP Java服务器页面
			大家好!好久不见!今日我们开始学习JSP了,一些记录基础性的知识在这里与大家分享. 先说下URL(Uniform Resource Locator 统一资源定位符). URL包括传输协议(http:/ ... 
- Eclipse配置SVN的几种方法及使用详情(此文章对Myeclipse同样适用)
			一.在Eclipse里下载Subclipse插件 方法一:从Eclipse Marketplace里面下载 具体操作:打开Eclipse --> Help --> Eclipse Mark ... 
- Java上传且后台解析XML文件
			后台代码: import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.InputStream ... 
- HDU 1756  Cupid's Arrow( 判断点在多边形的内外 )
			链接:传送门 思路:判断每支箭是否在多边形内,计算几何点定位中水题,不清楚下面的代码能不能适用于给定点的顺序不确定( 既不是顺时针又不是逆时针 ) /************************* ... 
- 洛谷P1004 方格取数
			网络流大法吼 不想用DP的我选择了用网络流-- 建模方法: 从源点向(1,1)连一条容量为2(走两次),费用为0的边 从(n,n)向汇点连一条容量为2,费用为0的边 每个方格向右边和下边的方格连一条容 ... 
