markdown 题面
查看原帖
markdown 题面
413147
feicheng楼主2021/7/19 20:00

题目描述

您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:

  1. 查询 kk 在区间内的排名

  2. 查询区间内排名为kk 的值

  3. 修改某一位值上的数值

  4. 查询 kk 在区间内的前驱(前驱定义为严格小于 xx,且最大的数,若不存在输出 2147483647-2147483647

  5. 查询 kk 在区间内的后继(后继定义为严格大于 xx,且最小的数,若不存在输出 21474836472147483647

输入格式

第一行两个数 n,mn,m,表示长度为 nn 的有序序列和 mm 个操作。

第二行有 nn 个数,表示有序序列。

下面有 mm 行,optopt 表示操作标号。

opt=1opt=1,则为操作 11,之后有三个数 l r kl~r~k,表示查询 kk 在区间 [l,r][l,r] 的排名。

opt=2opt=2,则为操作 22,之后有三个数 l r kl~r~k,表示查询区间 [l,r][l,r] 内排名为 kk 的数。

opt=3opt=3,则为操作 33,之后有两个数 pos kpos~k,表示将 pospos 位置的数修改为 kk

opt=4opt=4,则为操作 44,之后有三个数 l r kl~r~k,表示查询区间 [l,r][l,r]kk 的前驱。

opt=5opt=5,则为操作 55,之后有三个数 l r kl~r~k,表示查询区间 [l,r][l,r]kk 的后继。

输出格式

对于操作 1,2,4,51,2,4,5,各输出一行,表示查询结果。

提示说明

1n,m5×1041\le n,m\le5\times 10^4,序列中的值在任何时刻 [0,108]\in[0,10^8]

题目来源:bzoj3196 / Tyvj1730 二逼平衡树,在此鸣谢

此数据为洛谷原创。(特别提醒:此数据不保证操作4、5一定存在,故请务必考虑不存在的情况)

## 题目描述

您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:

1. 查询 $k$ 在区间内的排名

2. 查询区间内排名为$k$ 的值

3. 修改某一位值上的数值

4. 查询 $k$ 在区间内的前驱(前驱定义为严格小于 $x$,且最大的数,**若不存在输出 $-2147483647$**)

5. 查询 $k$ 在区间内的后继(后继定义为严格大于 $x$,且最小的数,**若不存在输出 $2147483647$**)

## 输入格式

第一行两个数 $n,m$,表示长度为 $n$ 的有序序列和 $m$ 个操作。

第二行有 $n$ 个数,表示有序序列。

下面有 $m$ 行,$opt$ 表示操作标号。

若 $opt=1$,则为操作 $1$,之后有三个数 $l~r~k$,表示查询 $k$ 在区间 $[l,r]$ 的排名。

若 $opt=2$,则为操作 $2$,之后有三个数 $l~r~k$,表示查询区间 $[l,r]$ 内排名为 $k$ 的数。

若 $opt=3$,则为操作 $3$,之后有两个数 $pos~k$,表示将 $pos$ 位置的数修改为 $k$。

若 $opt=4$,则为操作 $4$,之后有三个数 $l~r~k$,表示查询区间 $[l,r]$ 内 $k$ 的前驱。

若 $opt=5$,则为操作 $5$,之后有三个数 $l~r~k$,表示查询区间 $[l,r]$ 内 $k$ 的后继。

## 输出格式

对于操作 $1,2,4,5$,各输出一行,表示查询结果。

## 提示说明

$1\le n,m\le5\times 10^4$,序列中的值在任何时刻  $\in[0,10^8]$

题目来源:bzoj3196 / Tyvj1730 二逼平衡树,在此鸣谢

此数据为洛谷原创。**(特别提醒:此数据不保证操作4、5一定存在,故请务必考虑不存在的情况)**

@SSerxhs

2021/7/19 20:00
加载中...