[平衡树] mingap

时间:2021-08-06 23:50:51

时间限制: 1 Sec  内存限制: 128 MB
提交: 18  解决: 9

题目描述

实现一种数据结构,维护以下两个操作: 
(1) I x :加入元素 x ; 
(2) M :输出当前表中相差最小的两个元素的差。 
一开始表为空,插入次数不超过 50000 ,插入的数字不超过 220−1 且都为正数,如果要插入的是前面已有的元素,则不处理。

输入

第一行为操作数,以下每行一种操作

输出

对于每个 M 的操作,输出对应的结果,每行一个数。

样例输入

5
I 1
I 10
M
I 6
M

样例输出

9
4
 
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std;
int n;
struct node
{
int key;
node *child[];
}bst[],*root,*pos;
queue<node*>mem;
void newnode(node* &r,int key)
{
if(mem.empty())r=pos++;
else r=mem.front(),mem.pop();
r->key=key;
r->child[]=r->child[]=NULL;
}
void insert(node* &r,int key)
{
if(r==NULL)newnode(r,key);
else insert(r->child[r->key<key],key);
}
bool exist(node* &r,int key)
{
if(r==NULL)return false;
if(r->key>key)return exist(r->child[],key);
else return (r->key==key)||exist(r->child[],key);
}
int mmin(node* &r,int key)
{
if(r==NULL)return key;
if(r->key<=key)return mmin(r->child[],key);
else
{
int s=mmin(r->child[],key);
if(s==key)return r->key;
}
}
int mmax(node* &r,int key)
{
if(r==NULL)return key;
if(r->key>=key)return mmax(r->child[],key);
else
{
int s=mmax(r->child[],key);
if(s==key)return r->key;
}
}
int main()
{
root=NULL;
pos=bst;
int i,j,num,ans=;
char s[];
scanf("%d",&n);
for(i=;i<=n;i++)
{
scanf("%s",s);
if(s[]=='I')
{
scanf("%d",&num);
if(i==)
{
insert(root,num);
continue;
}
if(root,exist(root,num))continue;
int a=mmin(root,num),b=mmax(root,num);
if(a==num)a=;if(b==num)b=;
ans=min(ans,min(abs(num-a),abs(num-b)));
insert(root,num);
}
else printf("%d\n",ans);
}
}

[平衡树] mingap的更多相关文章

  1. &lbrack;BZOJ3223&rsqb;Tyvj 1729 文艺平衡树

    [BZOJ3223]Tyvj 1729 文艺平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区 ...

  2. &lbrack;BZOJ3224&rsqb;Tyvj 1728 普通平衡树

    [BZOJ3224]Tyvj 1728 普通平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个) ...

  3. BZOJ3223&colon; Tyvj 1729 文艺平衡树 &lbrack;splay&rsqb;

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3595  Solved: 2029[Submit][Sta ...

  4. &lbrack;普通平衡树treap&rsqb;【学习笔记】

    3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 9046  Solved: 3840[Submit][Sta ...

  5. BZOJ 3224&colon; Tyvj 1728 普通平衡树

    3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 9629  Solved: 4091[Submit][Sta ...

  6. BZOJ 3223&colon; Tyvj 1729 文艺平衡树

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3628  Solved: 2052[Submit][Sta ...

  7. 【Splay】bzoj3223-Tyvj1729文艺平衡树

    一.题目 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 ...

  8. hiho &num;1329 &colon; 平衡树&&num;183&semi;Splay

    #1329 : 平衡树·Splay 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,上一次你跟我讲了Treap,我也实现了.但是我遇到了一个关键的问题. ...

  9. bzoj 3196&colon; Tyvj 1730 二逼平衡树

    #include<cstdio> #include<ctime> #include<cstdlib> #include<iostream> #defin ...

随机推荐

  1. ASP&period;NET MVC Application&lowbar;Error 无效不执行

    我们一般在开发 ASP.NET MVC 应用程序的时候,会在 Application_Error 中添加异常日志记录,一般会记录 500 的错误信息,但如果应用程序在出错的时候,Application ...

  2. E-Business Suite 12&period;2 startCD 50 Install Fails with Fatal Error&colon; TXK Install Service oracle&period;apps&period;fnd&period;txk&period;config&period;ProcessStateException&colon; OUI process failed Cannot install Web Tier Utilities

    在rhel7.2上,使用startCD 50安装ebs r12.2的使用,安装到38%的时候就报错,遇到了和以下文章类似的问题: http://www.cnblogs.com/abclife/p/49 ...

  3. win7局域网里输入正确密码也访问不了其他的机器

    1.本地安全策略-本地策略-安全选项-网络安全:LAN管理器身份验证级别,默认是“没有定义”,更改为“发送LM和NTLM响应! Windows 7系统自带的是一个统安全管理工具--本地安全策略,它可以 ...

  4. 源码编译安装LNMP环境及配置基于域名访问的多虚拟主机

    实验环境及软件版本: CentOS版本: 6.6(2.6.32.-504.el6.x86_64) nginx版本: nginx-1.6.2 mysql版本:  Mysql-5.6.23 php版本: ...

  5. Struts2思维导图

    自己感觉自己的知识不是很扎实,所以昨天留时间复习知识,昨天边复习边画了一个思维导图.不知道自己画的对不对,还没有画完.有错的地方大家请和我说.希望自己能更加牢固的记住这些知识. 不说废话,开图.图有点 ...

  6. LVM基本应用,扩展及缩减实现

    一.基本概念 如上图所示:底层PV(物理卷可能是硬盘设备,分区或RAID等),一个或多个PV组织成一个VG(卷组),卷组是不能直接格式化使用的,所以在VG之上,还需要创建LV进行格式化使用.VG在逻辑 ...

  7. redis 主从复制 &lbrack;转&rsqb;

    一.Redis的Replication: 这里首先需要说明的是,在Redis中配置Master-Slave模式真是太简单了.相信在阅读完这篇Blog之后你也可以轻松做到.这里我们还是先列出一些理论性的 ...

  8. Spring 计划 7&period;0

    Sprint回顾 让我们一次比一次做得更好.   1.回顾组织 主题:“我们怎样才能在下个sprint中做的更好?” 时间:设定为1小时. 参与者:整个团队. 场所:宿舍. 秘书:李新佳.    2. ...

  9. plupload 上传组件的使用

    在这之前在感谢园子好多大牛的文章,在这里就不列出来了. 进入正题. svn检索https://github.com/moxiecode/plupload 获取到代码,这篇文章使用的是v2.1.8 主要 ...

  10. nyoj1273 河南省第九届省赛&lowbar;&quot&semi;宣传墙&quot&semi;、状压DP&plus;矩阵幂加速

    宣传墙 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 ALPHA 小镇风景美丽,道路整齐,干净,到此旅游的游客特别多.CBA 镇长准备在一条道路南 面 4*N 的墙上做 ...