1581_二逼平衡树

2022-5-16 18:17| 发布者: Hocassian| 查看: 46| 评论: 0|原作者: 肇庆学院ACM合集

摘要:
C:\Users\Administrator\Downloads\2019-10-12-10-14-2-89503992317500-Problem List-采集的数据-后羿采集器.html

Pro.ID

1581

Title

二逼平衡树

Title链接

http://10.20.2.8/oj/exercise/problem?problem_id=1581

AC

5

Submit

5

Ratio

100.00%

时间&空间限制

  • Time Limit: 20000/10000 MS (Java/Others)     Memory Limit: 524288/524288 K (Java/Others)
  • 描述

    这是一道模板题。

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

    1. 查询 x 在区间内的排名;

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

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

    4. 查询 x 在区间内的前趋(前趋定义为小于 x ,且最大的数);

    5. 查询 x 在区间内的后继(后继定义为大于 x ,且最小的数)。

    输入

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

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

    下面有 m 行,每行第一个数表示操作类型:

    1. 之后有三个数 l,r,x 表示查询 x 在区间 [l,r] 的排名;

    2. 之后有三个数 l,r,k 表示查询区间 [l,r] 内排名为 k 的数;

    3. 之后有两个数 pos, x 表示将 pos 位置的数修改为 x ;

    4. 之后有三个数 l,r,x 表示查询区间 [l,r] 内 x 的前趋;

    5. 之后有三个数 l,r,x 表示查询区间 [l,r] 内 x 的后继。

    1 ≤ n, m ≤ 5×104  , −108 ≤ k, x ≤ 108

    输出

    Description

    这是一道模板题。

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

    1. 查询 x 在区间内的排名;

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

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

    4. 查询 x 在区间内的前趋(前趋定义为小于 x ,且最大的数);

    5. 查询 x 在区间内的后继(后继定义为大于 x ,且最小的数)。

    Input

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

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

    下面有 m 行,每行第一个数表示操作类型:

    1. 之后有三个数 l,r,x 表示查询 x 在区间 [l,r] 的排名;

    2. 之后有三个数 l,r,k 表示查询区间 [l,r] 内排名为 k 的数;

    3. 之后有两个数 pos, x 表示将 pos 位置的数修改为 x ;

    4. 之后有三个数 l,r,x 表示查询区间 [l,r] 内 x 的前趋;

    5. 之后有三个数 l,r,x 表示查询区间 [l,r] 内 x 的后继。

    1 ≤ n, m ≤ 5×104  , −108 ≤ k, x ≤ 108

    Output

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

    Sample Input

    9 6
    4 2 2 1 9 4 0 1 1
    2 1 4 3
    3 4 10
    2 1 4 3
    1 2 5 9
    4 3 9 5
    5 2 8 5

    Sample Output

    2
    4
    3
    4
    9

    Author

    样例输入

    9 6
    4 2 2 1 9 4 0 1 1
    2 1 4 3
    3 4 10
    2 1 4 3
    1 2 5 9
    4 3 9 5
    5 2 8 5

    样例输出

    2
    4
    3
    4
    9

    提示

    作者


    路过

    雷人

    握手

    鲜花

    鸡蛋

    最新评论

    返回顶部