splay poj3481
三种操作
1 k p 插入一个点
2 输出p最大对应的k 删除这个点
3 输出p最小对应的k 删除这个点
splay 维护一下 一不小心就会超时
#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<string.h> using namespace std;
#define inf 1000000000
#define MAXN 1000100 int pa[MAXN],ch[MAXN][],ki[MAXN],pi[MAXN];
int root,cnt; void Rotate(int x,int kind)
{
int y=pa[x];
int z=pa[y];
ch[y][!kind]=ch[x][kind];
pa[ch[x][kind]]=y;
if(pa[y])ch[pa[y]][ch[pa[y]][]==y]=x;
pa[x]=pa[y];
ch[x][kind]=y;
pa[y]=x;
}
void splay(int x,int goal)
{
while(pa[x]!=goal)
{
if(pa[pa[x]]==goal)
{
Rotate(x,ch[pa[x]][]==x);
}
else
{
int y=pa[x];
int kind=ch[pa[y]][]==y;
if(ch[y][kind]==x)
{
Rotate(x,!kind);
Rotate(x,kind);
}
else
{
Rotate(y,kind);
Rotate(x,kind);
}
}
}
if(goal==)root=x;
} void newnode(int &x,int k,int p,int father)
{
x=++cnt;
pa[x]=father;
ch[x][]=ch[x][]=;
pi[x]=p;
ki[x]=k;
}
void Insert(int k,int p)
{
int rt=root;
int r=root;
while(rt!=)
{
r=rt;
if(pi[rt]<p)rt=ch[rt][];
else rt=ch[rt][];
}
newnode(ch[r][pi[r]<p],k,p,r);
splay(ch[r][pi[r]<p],root);
ch[][]=ch[][]=;
} int f_max(int x)
{
while(ch[x][])
x=ch[x][];
if(x==root)
root=ch[x][];
ch[pa[x]][]=ch[x][];
pa[ch[x][]]=pa[x];
return ki[x];
}
int f_min(int x)
{
while(ch[x][])
x=ch[x][];
if(x==root)
root=ch[x][];
ch[pa[x]][]=ch[x][];
pa[ch[x][]]=pa[x];
return ki[x];
}
int main()
{
root=cnt=;
int n; while(scanf("%d",&n)!=EOF&&n)
{
if(n==)
{
int k,p;
scanf("%d%d",&k,&p);
Insert(k,p);
}
else if(n==)
printf("%d\n",f_max(root));
else
printf("%d\n",f_min(root));
} return ;
}
splay poj3481的更多相关文章
- 【POJ3481】【splay】Double Queue
Description The new founded Balkan Investment Group Bank (BIG-Bank) opened a new office in Bucharest ...
- POJ-3481 Double Queue (splay)
The new founded Balkan Investment Group Bank (BIG-Bank) opened a new office in Bucharest, equipped w ...
- poj3481(splay tree 入门题)
平衡树都能做. // // main.cpp // splay // // Created by 陈加寿 on 16/3/25. // Copyright © 2016年 chenhuan001. A ...
- 三大平衡树(Treap + Splay + SBT)总结+模板[转]
Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板: #include <cstdio> #include <cstring> #i ...
- 平衡树初阶——AVL平衡二叉查找树+三大平衡树(Treap + Splay + SBT)模板【超详解】
平衡树初阶——AVL平衡二叉查找树 一.什么是二叉树 1. 什么是树. 计算机科学里面的树本质是一个树状图.树首先是一个有向无环图,由根节点指向子结点.但是不严格的说,我们也研究无向树.所谓无向树就是 ...
- 三大平衡树(Treap + Splay + SBT)总结+模板[转]
Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板: #include <cstdio> #include <cstring> #i ...
- 三大平衡树(Treap + Splay + SBT)总结+模板
Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板: #include <cstdio> #include <cstring> #i ...
- BZOJ 1251: 序列终结者 [splay]
1251: 序列终结者 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3778 Solved: 1583[Submit][Status][Discu ...
- [bzoj1269][AHOI2006文本编辑器editor] (splay模版题 or pb_ds [rope]大法)
Description 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目标,可可对“文本编辑器”做了一个抽象的定义: 文本:由0个或 ...
随机推荐
- POJ1985Cow Marathon[树的直径]
Cow Marathon Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 5117 Accepted: 2492 Case ...
- Java面向对象:接口
Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...
- 转:导出/导入Eclipse的workspace配置(备份Eclipse配置)
from: http://www.cnblogs.com/52php/p/5677647.html 设置好workspace配置后可以将配置保存为 *.epf 文件. 进入 File -> Ex ...
- 内裤:DataTable转Model
public class ConvertHelper<T> where T : new() { /// <summary> /// 利用反射和泛型 /// </summa ...
- Centos 检查磁盘读写性能
启动Tomcat发现deploy war的速度明显变慢, 怀疑磁盘出问题 测试写入 [tomcat@localhost ~]$ dd if=/dev/zero of=kwxgd bs=64k coun ...
- GNU Trove trove4j
GNU Trove (http://trove4j.sourceforge.net/) 是一个Java 集合类库.在某些场景下,Trove集合类库提供了更好的性能,而且内存使用更少.以下是Trove中 ...
- js,onblur后下一个控件获取焦点判断、html当前活跃控件、jquery版本查看、jquery查看浏览器版本、setTimeout&setInterval
需求: input控件在失去焦点后直接做验证,验证通不过的话,显示相应错误.但是如果失去焦点后点击的下个控件是比较特殊的控件(比如,退出系统),那么不执行验证操作,直接退出系统(防止在系统退出前,还显 ...
- npm淘宝镜像
前端开发会用到npm的包,但是国外的速度有时候很慢,幸运的是,淘宝做了镜像,一起来看看吧. https://npm.taobao.org/
- jQuery offset,position,offsetParent,scrollLeft,scrollTop html控件定位 css position
定位应用:点击一个按钮,然后在按钮的右边弹出一个提示框 1,提示框相对于屏幕进行定位,那么使用offset来取得当前按钮相对于body的top和left,然后通过$('body').prepend(t ...
- Hadoop:pig 安装及入门示例
pig是hadoop的一个子项目,用于简化MapReduce的开发工作,可以用更人性化的脚本方式分析数据. 一.安装 a) 下载 从官网http://pig.apache.org下载最新版本(目前是0 ...