题意:

标程:

 #include<cstdio>
using namespace std;
int read()
{
int x=,f=;char ch=getchar();
while (ch<''||ch>'') {if (ch=='-') f=-;ch=getchar();}
while (''<=ch&&ch<='') x=(x<<)+(x<<)+ch-'',ch=getchar();
return x*f;
}
const int N=;
int bit[N+],op,x,n;
int lowbit(int x){return x&(-x);}
void add(int x,int y) {while (x<=N) bit[x]+=y,x+=lowbit(x);}
int sum(int x){int res=;while (x) res+=bit[x],x-=lowbit(x);return res;}
int kth(int k)
{
if (!k||sum(N)<k) return -;
int l=,r;
for (int i=;i>=&&k;i--)
if ((r=l+(<<i))<=N&&bit[r]<k) k-=bit[l=r];
return l+;
}
int main()
{
n=read();
while (n--)
{
op=read(),x=read();
if (op==) {if (!(sum(x)-sum(x-))) add(x,);}else
if (op==) {if (sum(x)-sum(x-)) add(x,-);}else
if (op==) printf("%d\n",sum(x-)+);else
if (op==) printf("%d\n",kth(x));else
if (op==) printf("%d\n",kth(sum(x-)));else
printf("%d\n",kth(sum(x)+));
}
return ;
}

易错点:1.注意5e6有2^22。

2.二分时先找到sum=k-1的最远处,然后+1,即是sum=k的第一点。

题解:树状数组+二分

由于这道题xi比较小,我们不用splay,直接用树状数组即可。

树状数组维护一个数值是否出现。

查询第k个直接在bit上二分即可,类似于倍增,因为树状数组上的每一段都是2的幂次,每一个数都是若干2的幂次的和。树状数组单点的话:除sum(x)-sum(x-1)外也可以用下面的方法:

int ans=bit[x];for (int i=x-1;i!=x-lowbit(x);i-=lowbit(i)) ans-=bit[i];因为在x-lowbit(x)的前面一段是互相抵消的,只需要计算最后一段lowbit的差即可。

soj102 普通平衡树的更多相关文章

  1. [BZOJ3223]Tyvj 1729 文艺平衡树

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

  2. [BZOJ3224]Tyvj 1728 普通平衡树

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

  3. BZOJ3223: Tyvj 1729 文艺平衡树 [splay]

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

  4. [普通平衡树treap]【学习笔记】

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

  5. BZOJ 3224: Tyvj 1728 普通平衡树

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

  6. BZOJ 3223: 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 #1329 : 平衡树·Splay

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

  9. bzoj 3196: Tyvj 1730 二逼平衡树

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

随机推荐

  1. Area--->AreaRegistrationContext.MapRoute

    文章引导 MVC路由解析---IgnoreRoute MVC路由解析---MapRoute MVC路由解析---UrlRoutingModule Area的使用 Area--->AreaRegi ...

  2. Ngui之UI框架的层级处理

    #region 处理层级问题 void DepthIncrease(UIWndBase uiWnd) { DepthIncrease(uiWnd.transform, UIFlag); } publi ...

  3. Rabbit MQ 基础入门

    Rabbit MQ 学习(一)基础入门 简介 RabbitMQ 简介 为什么选择 RabbitMQ RabbitMQ 的模型架构是什么? AMQP 协议是什么? AMQP 常用命令 概念 生产者和消费 ...

  4. 关于private,default,protected,public,成员变量访问权限

    关于private,protected,public,default成员变量的访问权限,请参阅上图! 子类要访问父类的private成员变量,必须采用采用get方法: eg: public class ...

  5. css3 常用的属性

    1.伪类选择符 Pseudo-Classes Selectors Selectors选择符 CSS Version版本 Description简介 E:link CSS1 设置超链接a在未被访问前的样 ...

  6. SparkListener监听使用方式及自定义的事件处理动作

    本文针对spark 2.0+版本 概述 spark 提供了一系列整个任务生命周期中各个阶段变化的事件监听机制,通过这一机制可以在任务的各个阶段做一些自定义的各种动作.SparkListener便是这些 ...

  7. 03、request 模块高级

    requests高级部分 代理 cookie 验证码的识别 模拟登陆 代理 代理概念:代理服务器. 作用:接受请求==>请求转发. 代理和爬虫之间的关联: 可以使用请求转发的机制使得目的服务器接 ...

  8. Android笔记之ExpandableListView(悬浮吸顶Demo)

    参考链接 ExpandableListView中item的定位问题 - RELY_ON_YOURSELF的博客 - CSDN博客(感觉写得很好,讲到了组位置.子位置及原始位置之间的转换) how to ...

  9. iOS组件化开发-发布私有库

    远程索引库 将远程索引库添关联到本地 pod repo 查看本地已关联仓库源 pod repo add 本地索引库名称 远程索引库仓库地址 pod repo update 索引库名称 pod repo ...

  10. iOS逆向系列-动态调试

    Xcode调试App原理 Mac安装了Xcode Xcode的安装包中包含了debugserver 可执行类型的Mach-O文件,iPhone第一次连接Xcode调试会将Xcode中的debugser ...