bzoj3224: Tyvj 1728 普通平衡树(打个splay暖暖手)

  (其实今天好热啊?

  题目大意:插入,删除,k小,前驱后继,数的排名。

  splay和treap裸题...过几天补个treap的

splay:

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#define which(x) (son[fa[x]][1]==x)
using namespace std;
const int extar[2]={2147483647,-2147483647};
int fa[100010],count[100010],son[100010][3],val[100010],data[100010];
int root,x,y,n,tot,xiugai;
void read(int &k)
{k=0;int f=1;char c=getchar();while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();while(c<='9'&&c>='0')k=k*10+c-'0',c=getchar();k*=f;
}
void rotate(int x)
{int f=fa[x];bool k=which(x);son[f][k]=son[x][!k];son[x][!k]=f;son[fa[f]][which(f)]=x;if(son[f][k])fa[son[f][k]]=f;fa[x]=fa[f];fa[f]=x;count[x]=count[f];count[f]=count[son[f][0]]+count[son[f][1]]+val[f];
}
void splay(int x,int g)
{while(fa[x]!=g){int f=fa[x];if(fa[f]==g){rotate(x);break;}if(which(x)^which(f))rotate(x);else rotate(f);rotate(x);}if(!g)root=x;
}
int search(int x,int y)
{if(data[x]>y&&son[x][0])return search(son[x][0],y);if(data[x]<y&&son[x][1])return search(son[x][1],y);return x;
}
int ext(int x,int w)
{int k=search(x,extar[w]);splay(k,0);return data[k];
}
int pred(int w)
{int k=search(root,w);splay(k,0);if(data[k]<w)return data[k];return ext(son[k][0],0);
}
int succ(int x)
{int k=search(root,x);splay(k,0);if(data[k]>x)return data[k];return ext(son[k][1],1);
}
int rank(int x,int k)
{if(k<=count[son[x][0]])return rank(son[x][0],k);if(k<=(count[son[x][0]]+val[x]))return x;return rank(son[x][1],k-count[son[x][0]]-val[x]);
}
int findnum(int x)
{int k=search(root,x);splay(k,0);return count[son[k][0]]+1;
}
void insert(int &x,int w,int f)
{if(!x){x=++tot;count[x]=val[x]=1;data[x]=w;fa[x]=f;xiugai=tot;return;}if(data[x]==w)val[x]++,xiugai=x;if(data[x]<w)insert(son[x][1],w,x);if(data[x]>w)insert(son[x][0],w,x);count[x]++;
}
void del(int w)
{int k=search(root,w);splay(k,0);if(data[k]==w){if(val[k]>1)val[k]--,count[k]--;elseif(!son[k][0]){root=son[k][1];fa[root]=fa[k]=son[k][1]=count[k]=val[k]=data[k]=0;}else{fa[son[k][0]]=0;ext(son[k][0],0);son[root][1]=son[k][1];if(son[k][1])fa[son[k][1]]=root;count[root]+=count[son[k][1]];fa[k]=son[k][0]=son[k][1]=data[k]=val[k]=count[k]=0;}}
}
int main()
{read(n);for(int i=1;i<=n;i++){read(x);read(y);switch(x){case 1:insert(root,y,0);splay(xiugai,0);root=xiugai;break;case 2:del(y);break;case 3:printf("%d\n",findnum(y));break;case 4:printf("%d\n",data[rank(root,y)]);break;case 5:printf("%d\n",pred(y));break;case 6:printf("%d\n",succ(y));break;default:break;}}
}
View Code

 

转载于:https://www.cnblogs.com/Sakits/p/6838764.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机相机自动识别语音提示

技术背景&#xff1a; 时下流行的手机拍照功能越来越多&#xff0c;在众多的手机拍照过程中&#xff0c;我们只在于手机拍照的效果和风景是否美好&#xff0c;甚至拿着手机自我狂拍&#xff0c;留下美好的记忆和回忆。 有时候根据手机相机的已有技术功能随便一设置就能拍到理想…

c# Invoke和BeginInvoke 区别

转自http://www.cnblogs.com/c2303191/articles/826571.html Control的Invoke和BeginInvoke是相对于支线线程&#xff08;因为一般在支线线程中调用&#xff0c;用来更新主线程ui&#xff09;Invoke立即插入主线程中执行&#xff0c;而BeginInvoke 要等主线程结束才执行 近日&a…

04 Springboot 格式化LocalDateTime

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

DNN使用非80端口和总是跳转到http://localhost问题的解决

2019独角兽企业重金招聘Python工程师标准>>> 我试图在一台服务器上安装一个DNN网站时&#xff0c;遇到了一些问题。问题一&#xff1a;遇到的第一个问题就是网站总是自动导向到localhost。不管我怎么试&#xff0c;只要我输入http://domain.com/dnn&#xff0c;总是…

Jmter操作数据库

1、导入jdbc的jar包&#xff0c;因为jmeter本身不能直接连接mysql&#xff0c;所以需要导入第三方的jar包&#xff0c;来连接mysql&#xff0c;如下操作&#xff1a;2、创建数据库连接如下&#xff1a; 3、配置mysql的url、端口号、账号、密码注意上面的Database URL&#xff1…

ComponentOne FlexGrid for WinForms 中文版快速入门(9)—过滤

C1FlexGrid过滤 表格中的数据过滤通常有两种形式&#xff1a; 基于表头&#xff1a;过滤器的图标出现在有一个过滤器适用于它的每一列。用户可以通过点击过滤器的图标来查看和编辑过滤器。这是Windows 7或Vista或C1FlexGrid控件使用的机制。这种类型的过滤器的主要优点是&…

Pycharm搜索导航之文件名、符号名搜索

1、准备一个工程 向你的工程中添加一个Python文件&#xff0c;并输入一些源码&#xff0c;例如&#xff1a; 2、转到对应文件、类、符号 Pycharm提供的一个很强力的功能就是能够根据名称跳转到任何文件、类、符号所在定义位置。 3、跳转到文件 按下CtrlShiftN快捷键&#xff0c…

分享网页设计当中使用进度条打造精美界面最佳例子

进度条是用户界面的重要组成部分&#xff0c;他向用户显示当前的下载进度&#xff0c;一个小的圆形因素使得界面不是更方便也更容易理解让我们举个例子&#xff0c;想象你去一个网站&#xff0c;你需要下载视频&#xff0c;你选择一个文件&#xff0c;按下"下载"按钮…

基于SqlSugar的开发框架循序渐进介绍(5)-- 在服务层使用接口注入方式实现IOC控制反转

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

软件项目管理 3.5.敏捷生存期模型

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

spark内核揭秘-02-spark集群概览

2019独角兽企业重金招聘Python工程师标准>>> Spark集群预览&#xff1a; 官方文档对spark集群的初步描述如下&#xff0c;这是一个典型的主从结构&#xff1a; 官方文档对spark集群中的一些关键点给出详细的指导&#xff1a; 其Worker的定义如下所示&#xff1a; 需…

使用docker创建和运行跨平台的容器化的mssql数据库

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

八十中集训解题报告

&#xff08;持续更新中…………&#xff09; 去八十中被屠成渣了&#xff0c;被屠得毫无还手之力&#xff0c;被屠得丧心病狂&#xff0c;停都停不下来&#xff0c;于是只好来写写题解了。 题目在openjudge上都有&#xff0c;自己去翻。 Day 1&#xff1a; 第一题&#xff1a;…

ER图

1、E-R图也称实体-联系图(Entity Relationship Diagram)&#xff0c;提供了表示实体类型、属性和联系的方法&#xff0c;用来描述现实世界的概念模型。2、它是描述现实世界概念结构模型的有效方法。是表示概念模型的一种方式&#xff0c;用矩形表示实体型&#xff0c;矩形框内写…

CXP 协议中upconnection 与downconnection的说明及其区别

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Eclipse之文件【默认编码格式设置】,防止乱码等问题

文件默认编码格式设置步骤如下&#xff1a; 这里显示的是workspace的视图 其他格式文件的视图如下&#xff1a; 转载于:https://www.cnblogs.com/TCB-Java/p/6857923.html

浏览器上写代码,4核8G微软服务器免费用,Codespaces真香

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

简单的创建一个性能计数器

一、性能监控的作用性能监控可以用于获取关于应用程序的正常行为的一般消息&#xff0c;性能监控是一个强大的工具&#xff0c;有助于理解系统的工作负载&#xff0c;观察变化和趋势&#xff0c;尤其是运行在服务器上的应用程序二、性能监控类&#xff08;System.Diagnostics&a…

dubbo是如何实现可扩展的?(二)

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

李卓豪:网易数帆数据中台逻辑数据湖的实践

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…