treap模版代码
treap模版暂存。
以后修改整理。
#include<cstdio> #include<iostream> #include <time.h> #include<cstdlib> using namespace std; struct Node { Node *ch[];//左右子树 int r;//优先级。数值越大,优先级越高 int v;//值 int cmp(int x)const { ; :; } }; /* 旋转操作: 1.取出新的根节点。左旋:取原根的右孩子;右旋:取原根的左孩子 2.左旋:原根的右孩子的左孩子取代之;右旋:原根的左孩子的右孩子取代之 3.左旋:原根成为新根的左孩子;右旋:原根成为新根的右孩子 4.将更新返回的根节点 旋转左右是根据原根结点的位置变化方向而定的 */ void rotate(Node* &o,int d)//d=0代表左旋,d=1代表右旋 { Node *k=o->ch[d^];//左旋时d^1得到1右孩子,右旋时d^1得到0左孩子,取出该结点 o->ch[d^]=k->ch[d]; //孩子的左(右)孩子取代孩子位置 k->ch[d]=o;//原根结点成为右(左)结点的左(右)孩子 o=k;//孩子结点取代原根节点位置,保证返回值是新的根结点 } void insert(Node* &o,int x)//在以o为根的子树中插入键值x,修改o { if(o==NULL) { o=new Node(); o->ch[]=o->ch[]=NULL; o->v=x; o->r=rand(); } else { int d=o->cmp(x); insert(o->ch[d],x); ); } } void remove(Node* &o,int x) { int d=o->cmp(x); ) { ]==NULL) o=o->ch[]; ]==NULL) o=o->ch[]; else { ]->r > o->ch[]->r)?:; rotate(o,d2); remove(o->ch[d2],x); } } else remove(o->ch[d],x); } bool find(Node* o,int x) { while(o!=NULL) { int d=o->cmp(x); ) return true; else o=o->ch[d]; } return false; } Node *head; int main() { int n; scanf("%d",&n); ; i<=n; ++i) { int t; scanf("%d",&t); insert(head,t); } int p; cout<<"===="<<endl; while(scanf("%d",&p)!=EOF) { int t; scanf("%d",&t); switch(p) { : cout<<find(head,t)<<endl; break; : insert(head,t); break; : remove(head,t); break; } } ; }
treap模版代码的更多相关文章
- hadoop概述测试题和基础模版代码
hadoop概述测试题和基础模版代码 1.Hadoop的创始人是DougCutting?() A.正确 B.错误答对了!正确答案:A解析:参考课程里的文档,这个就不解释了2.下列有关Hadoop的说法 ...
- PowerDesigner 生成C#实体模版代码
操作步骤见: https://blog.csdn.net/da454122373/article/details/54346217 最后的template 模版代码如下: .if (%isValid ...
- Lodop的JS模版代码、文档式模版 生成加载赋值博文索引
Lodop获取全部JS代码,传统JS模版的生成.LODOP设置打印设计返回JS代码是变量 LodopJS代码模版的加载和赋值 Lodop生成文档式模版 LodopJS文档式模版的加载和赋值 由于加载J ...
- 快速入门Treap(代码实现)
学习数据结构对我来说真的相当困难,网上讲\(Treap\)的我也看不太懂,前前后后花了大概六天才把\(Treap\)学会.为了避免再次忘记,这里我整理一下\(Treap\)的基础知识和模板. 阅读此文 ...
- java 网站源码 在线编辑模版 代码编辑器 兼容手机平板PC freemaker 静态引擎
前台: 支持四套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以 ...
- treap 模版
struct Treap { struct node { node *son[]; int key,siz,wei,cnt; node(int _key,node *f) { son[]=son[]= ...
- [技巧篇]01.Servlet的优化模版代码
Servlet.java的模版 #---------------------------------------------# # <aw:description>Template for ...
- Android开发模版代码(4)——状态栏设置
下面的代码是基于开源项目SystemBarTint,我们需要添加其依赖 compile 'com.readystatesoftware.systembartint:systembartint:1.0. ...
- VS Code安装yo(Yeoman) 插件下载.net core 模版代码开发
在安装插件以前,请看插件地址的相关依赖 Pre-requirements [Node.js] (https://nodejs.org) [npm] (https://www.npmjs.com) [Y ...
随机推荐
- 常用的MYSQL 命令
例1:建立一个名为xhkdb的数据库 mysql> create database xhkdb; 例2:显示数据库 命令:show databases (注意:最后有个s)mysql> ...
- sap 中怎样把非限制库存转为销售订单库存?
把非限制库存转为销售订单库存: MB1B 移动类型413 把销售订单库存转为非限制库存: MB1B移动类型411 E 切记!
- 老生常谈的Hibernate二级缓存
理解缓存的定义: 缓存(Cache): 计算机领域非常通用的概念.它介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运 ...
- 数据库中User和Schema的关系
如果我们想了解数据库中的User和Schema到底什么关系,那么让我们首先来了解一下数据库中User和Schema到底是什么概念. 在SQL Server2000中,由于架构的原因,Us ...
- C# EXCEL(.xls和.xlsx)导入到数据库
C# EXCEL(.xls和.xlsx)导入到数据库 转(http://www.cnblogs.com/bart-cai/articles/2716555.html) 原理:1.判断是否是Excel ...
- HTTP方法简介
GET 请求获取资源 HEAD 与GET类似,但服务器只返回首部 PUT 与GET相反,向服务器写入文档 POST 向服务器输入数据,通常使用HTML表单形式 TRACE 客户端发起请求时,需要穿越防 ...
- 搜索功能demo
代码如下: <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edg ...
- 伪命题:PHP识别url重写请求
手上有一个网站,然后启用了伪静态,因为一些设置上的原因,一段时间后,发现收录的都是.php的文件,而启用的伪静态地址则收录很少,在更改设置后,想尽快去掉.php的收录,然后想将.php的地址转向.ht ...
- 深入理解Redis:命令处理流程
Redis是著名的NoSQL键值数据库服务器,为了保证效率,其数据都缓存在内存中.与Memcached相比,Redis支持的数据类型更多,包括String,List,Set,Zset和Hash.下面简 ...
- 对Docker的价值和应用场景分析
近年来,Docker在IT界可谓风光十足,各大技术论坛上赚足了眼球,公司内外也有相当多的介绍和尝试,看上去如此高大上的技术,貌似会给云.服务部署.运维等领域带来颠覆性的创新. 近期查阅了一些文档,较深 ...