线段树+平衡树 我!又!被!卡!常!了! 以前的splay偷懒的删除找前驱后继的办法被卡了QAQ 放一个在洛谷开O2才能过的代码..我太菜了.. #include <bits/stdc++.h> #define INF 2147483647 #define rint register int #define full(a, b) memset(a, b, sizeof a) using namespace std; typedef long long ll; inline int lowbit…
题目链接 第一次写(2017.11.7): #include<cstdio> #include<cctype> using namespace std; const int N=1e5+5,INF=1e9; int size,root,t[N],sz[N],son[N][2],fa[N],cnt[N]; inline int read() { int now=0,f=1;register char c=getchar(); for(;!isdigit(c);c=getchar())…
题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 xx 数 删除 xx 数(若有多个相同的数,因只删除一个) 查询 xx 数的排名(排名定义为比当前数小的数的个数 +1+1 .若有多个相同的数,因输出最小的排名) 查询排名为 xx 的数 求 xx 的前驱(前驱定义为小于 xx ,且最大的数) 求 xx 的后继(后继定义为大于 xx ,且最小的数) 输入输出格式 输入格式: 第一行为 nn ,表示操作的个数,下面 nn 行每行有两个数 optopt 和…