【填坑】bzoj3224 splay裸题
人生第一道splay不出所料是一道裸题,一道水题,一道2k代码都不到的题
#include <cstdio>
int root,N=,n,p,q;
int fa[],c[][],size[],sp[];
void rot(int x)
{
int y=fa[x],k=(c[y][]==x);
size[y]=size[c[y][k]]+size[c[x][k]]+;size[x]=size[c[x][!k]]+size[y]+;
c[y][!k]=c[x][k];fa[c[y][!k]]=y;
fa[x]=fa[y];if(fa[y])c[fa[y]][c[fa[y]][]==y]=x;
c[x][k]=y;fa[y]=x;
}
void rots(int x,int g)
{
for(int y=fa[x];y!=g;rot(x),y=fa[x])
if(fa[y]!=g) rot((x==c[y][])==(y==c[fa[y]][])?y:x);
if(g==) root=x;
}
void insert(int x)
{
int y=root;
while(c[y][x>sp[y]]) y=c[y][x>sp[y]];
sp[++N]=x;c[N][]=c[N][]=;fa[N]=y;if(y)c[y][x>sp[y]]=N;
rots(N,);
}
void del(int x)
{
int y=root;
while(sp[y]!=x) y=c[y][x>sp[y]];
rots(y,);y=c[root][];
bool b;
if(!y) b=,y=c[root][];else b=;
while(c[y][b]) y=c[y][b];
rots(y,root);
c[y][b]=c[root][b];fa[c[root][b]]=y;fa[y]=;root=y;
size[y]=size[c[y][!b]]+size[c[y][b]];
}
int rank(int x)
{
int y=root,ans=;
if(x==){
printf("");
}
while(y)
if(x>sp[y])
ans+=size[c[y][]]+,y=c[y][];
else y=c[y][];
return ans+;
}
int num(int x)
{
int y=root;
while(x)
if(size[c[y][]]+<x)
x-=size[c[y][]]+,y=c[y][];
else if(size[c[y][]]+==x) return sp[y];
else y=c[y][];
return sp[y];
}
int pre(int x)
{
int ans;
for(int y=root;y;)
if(sp[y]<x)
ans=sp[y],y=c[y][];
else y=c[y][];
return ans;
}
int nex(int x)
{
int ans;
for(int y=root;y;)
if(sp[y]<=x)
y=c[y][];
else ans=sp[y],y=c[y][];
return ans;
}
int main()
{
freopen("1.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d",&p,&q);
if(p==) insert(q);
if(p==) del(q);
if(p==) printf("%d\n",rank(q));
if(p==) printf("%d\n",num(q));
if(p==) printf("%d\n",pre(q));
if(p==) printf("%d\n",nex(q));
}
return ;
}
貌似所有该犯的问题都犯了一遍了,,,感觉自己逻辑不够严谨啊
难道要背板???那么长感觉下不来啊
【填坑】bzoj3224 splay裸题的更多相关文章
- bzoj3223: Tyvj 1729 文艺平衡树 splay裸题
splay区间翻转即可 /************************************************************** Problem: 3223 User: walf ...
- 【模板篇】splay(填坑)+模板题(普通平衡树)
划着划着水一不小心NOIP还考的凑合了… 所以退役的打算要稍微搁置一下了… 要准备准备省选了…. 但是自己已经啥也不会了… 所以只能重新拾起来… 从splay开始吧… splay我以前扔了个板子来着, ...
- 动归专题QAQ(两天创造的刷题记录哟!✿✿ヽ(°▽°)ノ✿✿)(未填坑)
1092 采药:由于没有限制开始时间和结束时间,01背包就好了 1095 开心的金明:01背包,无fuck说 1104 摆花:f[i][j]表示摆了i种花,第i种花摆了j种的方案数,乱转移0.0(感觉 ...
- HDU 1711 Number Sequence(KMP裸题,板子题,有坑点)
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【填坑向】bzoj2038小Z的袜子 莫队
学莫队必做题,,,但是懒得写.今天来填个坑 莫队水题 莫队实际上就是按一个玄学顺序来离线计算询问,保证复杂度只会多一个n1/2,感觉是玄学(离线算法都很玄学) 易错点:要开long long(卡我半天 ...
- 【填坑向】spoj COT/bzoj2588 Count on a tree
这题是学主席树的时候就想写的,,, 但是当时没写(懒) 现在来填坑 = =日常调半天lca(考虑以后背板) 主席树还是蛮好写的,但是代码出现重复,不太好,导致调试的时候心里没底(虽然事实证明主席树部分 ...
- LCT裸题泛做
①洞穴勘测 bzoj2049 题意:由若干个操作,每次加入/删除两点间的一条边,询问某两点是否连通.保证任意时刻图都是一个森林.(两点之间至多只有一条路径) 这就是个link+cut+find roo ...
- BZOJ 3680: 吊打XXX【模拟退火算法裸题学习,爬山算法学习】
3680: 吊打XXX Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 3192 Solved: 1198[Sub ...
- #YCB#待做题目与填坑资料
各种填坑资料(qwq) 主席树(by YL)戳 树套树(by ZSY)戳 不要问我这些题咋来的(查大佬的水表呗) 题目列表: [HDU5977]Garden of Eden [BZOJ2752][HA ...
随机推荐
- iOS9新特性 window决定程序的状态栏管理问题
Xcode7升级之后遇到的问题 问题一: 老项目在Xcode6上运行没有任何问题,但在Xcode7上运行直接崩了! 经过一波分析: 发现是因为我顶部状态栏处添加了topWindow,用于处理Tab ...
- python+paramiko库+svn写的自动化部署脚本
第一篇博文 直接开门见山的说了. 这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞. 一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一 ...
- Qt-为应用程序添加logo
在Qt Creator中新建Qt Resource File,名字为logo.qrc 1.选择Add Prefix得到/new/prefix1 2.然后Add Files,将文件添加进去,如CA-DC ...
- Android中锁定文件的方法
androidSDK中并没有锁定文件相关的api. 但是android是基于linux操作系统的,linux比较底层,灵活性也更大,为了实现锁定文件的效果,大概有以下几种办法: 用chmod命令修改文 ...
- Circular Buffer
From:http://bradforj287.blogspot.com/2010/11/efficient-circular-buffer-in-java.html import java.util ...
- 纯 CSS 绘制图形(心形、六边形等)
<!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...
- C# 使用AForge调用笔记本摄像头拍照
vs2012 winform 连接摄像头设备,这里需要引入 代码: using AForge; using AForge.Controls; using AForge.Imaging; using ...
- Erlang--etc结构解析
Erlang中可以用List表达集合数据,但是如果数据量特别大的话在List中访问元素就会变慢了;这种主要是由于List的绝大部分操作都是基于遍历完成的. Erlang的设计目标是软实时(参考:htt ...
- Div 定时移动
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- spring自动扫描、DispatcherServlet初始化流程、spring控制器Controller 过程剖析
spring自动扫描1.自动扫描解析器ComponentScanBeanDefinitionParser,从doScan开始扫描解析指定包路径下的类注解信息并注册到工厂容器中. 2.进入后findCa ...