Hihocoder 1337 (splay)
Problem 平衡树 SBT
题目大意
维护一个序列,支持两种操作。
操作一:插入一个数。
操作二:询问第k小的数。
解题分析
~~刷刷水题,再熟悉一下splay的基本操作。
ps:哇咔咔,有连续四天的假期了,好开心~~
参考程序
#include <bits/stdc++.h>
using namespace std; struct node{
int v,sz;
node *l,*r,*f;
node(int v_=,int sz_=,node* f_=NULL,node* l_=NULL,node* r_=NULL)
{
v=v_; sz=sz_; l=l_; r=r_; f=f_;
}
}*rt; inline void pushup(node *x)
{
x->sz=;
if (x->l) x->sz += x->l->sz;
if (x->r) x->sz += x->r->sz;
}
void left(node* x,node* &rt)
{
node *y=x->f , *z=y->f;
if (y==rt) rt=x; else
if (y==z->l) z->l=x; else z->r=x;
x->f=y->f; y->f=x; if (x->l) x->l->f=y; y->r=x->l; x->l=y;
pushup(y); pushup(x);
}
void right(node* x,node* &rt)
{
node *y=x->f , *z=y->f;
if (y==rt) rt=x; else
if (y==z->l) z->l=x; else z->r=x;
x->f=y->f; y->f=x; if (x->r) x->r->f=y; y->l=x->r; x->r=y;
pushup(y); pushup(x);
}
void splay(node* x,node* &rt)
{
while (x!=rt)
{
node *y=x->f , *z=y->f;
if (y==rt)
if (x == y->l) right(x,rt); else left(x,rt);
else
if (y == z->l)
if (x == y->l) {right(y,rt);right(x,rt);}
else {left(x,rt);right(x,rt);}
else
if (x == y->r) {left(y,rt);left(x,rt);}
else {right(x,rt);left(x,rt);}
}
} void insert(int v,node* &x,node* f)
{
if (x==NULL)
{
x=new node(v,,f);
splay(x,rt);
return;
}
if (v < x->v) insert(v,x->l,x); else insert(v,x->r,x);
} int query(int k,node *x)
{
int num=x->l?x->l->sz:;
if (k==num+) return x->v;
if (k<num+) return query(k,x->l);
return query(k-num-,x->r);
}
void search(node *x)
{
if (x==NULL) return;
cout<<x->v<<" "<<x->sz;
if (x->l) cout<<" lson:"<<x->l->v;
if (x->r) cout<<" rson:"<<x->r->v;
cout<<endl;
if (x->l) search(x->l);
if (x->r) search(x->r); }
int main()
{
int n;
rt=NULL;
scanf("%d",&n);
for (int i=;i<=n;i++)
{
//search(rt);
char s[]; int x;
scanf("%s%d",s,&x);
if (s[]=='I') insert(x,rt,NULL); else cout<<query(x,rt)<<endl;
}
}
Hihocoder 1337 (splay)的更多相关文章
- Hihocoder 1329 平衡树·Splay(平衡树)
Hihocoder 1329 平衡树·Splay(平衡树) Description 小Ho:小Hi,上一次你跟我讲了Treap,我也实现了.但是我遇到了一个关键的问题. 小Hi:怎么了? 小Ho:小H ...
- 【hihocoder 1329】平衡树·Splay(Splay做法)
[题目链接]:http://hihocoder.com/problemset/problem/1329 [题意] [题解] 插入操作:-,记住每次插入之后都要把它放到根节点去就好; 询问操作:对于询问 ...
- Hihocoder 1333 (splay)
Problem 平衡树 splay2 题目大意 维护一个序列,支持四种操作: 操作1:添加一个数,编号为x,权值为y. 操作2:删除编号在区间[x,y]内的数. 操作3:将编号在区间[x,y]内的数的 ...
- Hihocoder 1329(splay)
Problem 平衡树 Splay 题目大意 维护一个数列,支持三种操作. 操作1:添加一个数x. 操作2:询问不超过x的最大的数. 操作三:删除大小在区间[a,b]内的数. 解题分析 和上一题相比, ...
- Hihocoder 1325 (splay)
Problem 平衡树 Treap 题目大意 维护一个数列,支持两种操作. 操作1:添加一个数x. 操作2:询问不超过x的最大的数. 解题分析 尝试了一下用指针来写splay,感觉写起来还是比较流畅的 ...
- hihocoder 1677 翻转字符串 splay
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个字符串S,小Hi希望对S进行K次翻转操作. 每次翻转小Hi会指定两个整数Li和Ri,表示要将S[Li..Ri]进行 ...
- 【hihocoder 1329】 平衡树·Splay(set做法)
[题目链接]:http://hihocoder.com/problemset/problem/1329 [题意] [题解] 因为一开始是空的树,所以; n其实就代表了树中的最多元素个数; 则最坏的情况 ...
- 【BBST 之伸展树 (Splay Tree)】
最近“hiho一下”出了平衡树专题,这周的Splay一直出现RE,应该删除操作指针没处理好,还没找出原因. 不过其他操作运行正常,尝试用它写了一道之前用set做的平衡树的题http://codefor ...
- hihocoder#1333 : 平衡树·Splay2 (区间操作)
题面: #1333 : 平衡树·Splay2 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:好麻烦啊~~~~~ 小Hi:小Ho你在干嘛呢? 小Ho:我在干活啊! ...
随机推荐
- SeasLog的日志
https://github.com/Neeke/SeasLog/blob/master/README_zh.md 中文文档地址, 这是一个很好用的记录日志扩展,可以用于项目之中
- ACM_Appleman and Card Game(简单贪心)
Appleman and Card Game Time Limit: 2000/1000ms (Java/Others) Problem Description: Appleman has n car ...
- python如何添加浏览器驱动路径
闲来无事,整一整python+selenium,写完代码后运行发现找不到webdriver的路径:之前是仿照java一样直接把webdriver放到浏览器的安装目录下 迫于无奈,只好查一下问题如何处理 ...
- 网页内容爬取:如何提取正文内容 BEAUTIFULSOUP的输出
创建一个新网站,一开始没有内容,通常需要抓取其他人的网页内容,一般的操作步骤如下: 根据url下载网页内容,针对每个网页的html结构特征,利用正则表达式,或者其他的方式,做文本解析,提取出想要的正文 ...
- 通俗理解LDA主题模型(boss)
0 前言 看完前面几篇简单的文章后,思路还是不清晰了,但是稍微理解了LDA,下面@Hcy开始详细进入boss篇.其中文章可以分为下述5个步骤: 一个函数:gamma函数 四个分布:二项分布.多项分布. ...
- JAVA程序员面试笔试宝典1
1.为什么Java中有些接口没有任何方法? 这些没有任何方法声明的接口又被称为标识接口,标识接口对于实现它的类没有任何语义上的要求,它仅仅充当一个标识的作用,用来表明它的类属于一个特定的类型. 2.j ...
- 并发和多线程(六)--ThreadLocal
ThreadLocal是什么? 当使用ThreadLocal修饰变量的时候,ThreadLocal会为每个使用该变量的线程提供独立的变量副本,每个线程可以独立改变自己的副本,而不 影响其他线程的变量副 ...
- Java线程处理
Java线程处理 创建线程 继承Thread类 public class TestThread extends Thread{ public void run(){ System.out.printl ...
- Install Zabbix with Docker
1. mysql -uroot -p -h10.10.0.242 zabbix<schema.sqlEnter password: * ERROR 1709 (HY000) at line 86 ...
- scala学习(2)---option空值处理
https://blog.csdn.net/shadowsama/article/details/78148919 https://www.cnblogs.com/mustone/p/5648914. ...