数列[专杀Splay版]
时间限制: 3 Sec 内存限制: 128 MB
提交: 49 解决: 7
题目描述
输入
输出
输出所有要求输出的数,每个数单独一行。
样例输入
样例输出
提示
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<ctime>
using namespace std;
const int maxn=;
int n,m;
struct node
{
int key,rev,size;
node *child[],*father;
}bst[maxn],*root;
node *pos=bst;
queue<node*>mem;
void update(node* &r)
{
if(r)
r->size=(r->child[]!=NULL?r->child[]->size:)+(r->child[]!=NULL?r->child[]->size:)+;
}
void rotate(node* &r,int b)
{
node *y=r->child[!b];
r->child[!b]=y->child[b];
y->child[b]=r;
update(r);
r=y;
update(r);
}
void newnode(node* &r,int key)
{
if(mem.empty())r=pos++;
else r=mem.front(),mem.pop();
r->key=key;
r->size=;
r->rev=rand();
r->child[]=r->child[]=NULL;
}
void insert(node* &r,int key)
{
if(!r)newnode(r,key);
else
{
bool b=r->key<key;
insert(r->child[b],key);
if(r->child[b]->rev<r->rev)
rotate(r,!b);
}
update(r);
}
void delet(node* &r,int key)
{
if(!r)return;
if(r->key==key)
{
if(r->child[]&&r->child[])
{
bool b=r->child[]->rev<r->child[]->rev;
rotate(r,b);
delet(r->child[b],key);
}
else
{
mem.push(r);
if(r->child[])r=r->child[];
else r=r->child[];
}
}
else
{
bool b=r->key<key;
delet(r->child[b],key);
}
update(r);
}
int end,len;
int read(char s[],int begin)
{
int i,ans=,f=;
for(i=begin;i<len;i++)
{
if(s[i]>=''&&s[i]<='') ans=ans*+s[i]-'';
else if(s[i]=='-')f=-;
else break;
}
if(begin==i)return ;
end=i+;
return ans*f;
}
int find(node* &r,int x)
{
if(r==NULL)return ;
if(r->child[]!=NULL&&x==r->child[]->size)return r->key;
if(!x&&r->child[]==NULL)return r->key;
if(!x)return find(r->child[],x);
if(r->child[]!=NULL&&r->child[]!=NULL)
{
int t=r->child[]->size;
if(t>x)return find(r->child[],x);
else if(t<x)return find(r->child[],x-t-);
}
else
{
if(r->child[]==NULL)return find(r->child[],x-);
if(r->child[]==NULL)return find(r->child[],x);
}
return ;
}
int a[maxn];
int main()
{
int i,j;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++)
{
scanf("%d",&j);
a[i]=j;
insert(root,j);
}
char s[];
getchar();
for(i=;i<=m;i++)
{
len=;
while(len==)gets(s),len=strlen(s);
int x=read(s,),y=read(s,end);
if(y!=)
{
delet(root,a[x]);
a[x]=y;
insert(root,a[x]);
}
else
{
int ans=find(root,x-);
if(ans!=)
printf("%d\n",ans);
}
}
return ;
}
数列[专杀Splay版]的更多相关文章
- DedeCMS顽固木马后门专杀工具V2.0实现方式研究
catalog . 安装及使用方式 . 检查DEDECMS是否为最新版本 . 检查默认安装(install)目录是否存在 . 检查默认后台目录(dede)是否存在 . 检查DedeCMS会员中心是否关 ...
- xor和gates的专杀脚本
前段时间的一次样本,需要给出专杀,应急中遇到的是linux中比较常见的两个家族gates和xor. 首先是xor的专杀脚本,xor样本查杀的时候需要注意的是样本的主进程和子进程相互保护(详见之前的xo ...
- PAT 1089 狼人杀-简单版(20 分)(代码+测试点分析)
1089 狼人杀-简单版(20 分) 以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀"游戏中,1 号玩家 ...
- 【旧文章搬运】PE感染逆向之修复(Serverx.exe专杀工具出炉手记)
原文发表于百度空间,2008-10-4看雪论坛发表地址:https://bbs.pediy.com/thread-73948.htm================================== ...
- PAT(B) 1089 狼人杀-简单版(Java)逻辑推理
题目链接:1089 狼人杀-简单版 (20 point(s)) 题目描述 以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局" ...
- DesktopLayer.exe专杀
这两天发现电脑卡慢. 同事电脑发现病毒,而后装上杀软后(一直在裸奔~~~),发现自己电脑也存在. DesktopLayer.exe 会有以下几个行为: 第一,会在C:\Program Files (x ...
- P10891089 狼人杀-简单版
1089 狼人杀-简单版 (20分) 以下文字摘自<灵机一动·好玩的数学>:“狼人杀”游戏分为狼人.好人两大阵营.在一局“狼人杀”游戏中,1 号玩家说:“2 号是狼人”,2 号玩家说: ...
- 病毒木马查杀实战第011篇:QQ盗号木马之专杀工具的编写
前言 由于我已经在<病毒木马查杀第004篇:熊猫烧香之专杀工具的编写>中编写了一个比较通用的专杀工具的框架,而这个框架对于本病毒来说,经过简单修改也是基本适用的,所以本文就不讨论那些重叠的 ...
- 病毒木马查杀实战第017篇:U盘病毒之专杀工具的编写
前言 经过前几次的讨论,我们对于这次的U盘病毒已经有了一定的了解,那么这次我们就依据病毒的行为特征,来编写针对于这次U盘病毒的专杀工具. 专杀工具功能说明 因为这次是一个U盘病毒,所以我打算把这次的专 ...
随机推荐
- [ABP实战开源项目]--YoYoCms目录
ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WE ...
- Struts2之 OGNL表达式和值栈
技术分析之OGNL表达式概述(了解) 1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写 * 所谓对象图,即以任意 ...
- Linux中grep命令学习
1.简介 grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小 ...
- 【安装Python环境】之“安装 setuptools ”时出现的问题以及解决办法
安装Python环境时,还需要安装"setuptools 与 pip",但是安装setuptools时出现了几个问题,如下: setuptools 与 pip 下载地址如下:htt ...
- jt格式文件与网格压缩
jt格式文件与网格压缩 介绍 jt是一种3D数据格式,主要用于工业,产品可视化,数据交换,并且西门子在2012推动jt成为ISO国际标准.在文件尺寸方面,采用了不少专门的压缩方法,比较轻量化. jt文 ...
- nginx+tomcat集群负载均衡(实现session复制)
转自:http://talangniao.iteye.com/blog/341512 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面( ...
- 走进javascript——数组的那些事
Array构造器 如果参数只有一个并且是Number类型,那么就是指定数组的长度,但不能是NaN,如果是多个会被当做参数列表. new Array(12) // (12) [undefined × 1 ...
- Ultimus BPM 金融与证券行业应用解决方案
Ultimus BPM 金融与证券行业应用解决方案 行业应用需求 金融服务业的整合与全球化发展,带来高度竞争的国际市场,所牵涉的产业包括了商业.贷款.投资银行,以及保险公司和许多其它为企业和消费者提供 ...
- Lesser known purrr tricks
purrr is package that extends R's functional programming capabilities. It brings a lot of new stuff ...
- 自研框架wap.js实践
示例 使用分为3个步骤: 1, 配置模板渲染中心,方便别人可以看到你的模板渲染,请求是什么关系,复杂度怎样 2, 配置事件分发中心 方便观察事件分发,事件复杂度 3,写对应的请求方法.渲染方法. ...