• 【模板】假的平衡树


    有很多方法维护以下要求的数...
    Here

    而我,很不要脸的用vector水了过去!...(捂脸)
    维护一些数,其中需要提供以下操作:
    1 插入x数
    2 删除x数(若有多个相同的数,因只删除一个)
    3 查询x数的排名(排名定义为比当前数小的数的个数+1。若有多个相同的数,因输出最小的排名)
    4 查询排名为x的数
    5 求x的前驱(前驱定义为小于x,且最大的数)
    6 求x的后继(后继定义为大于x,且最小的数)

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int n;
    vector<int> A;
    
    template <typename T>
    T read(){
        T N(0), F(1);
        char C = getchar();
        for(; !isdigit(C); C = getchar()) if(C == '-') F = -1;
        for(; isdigit(C); C = getchar()) N = N*10 + C-48;
        return N*F;
    }
    
    int main(){
        n = read<int>();
        while(n--){
            int op = read<int>();
            int x = read<int>();
    
            if(op == 1) A.insert(upper_bound(A.begin(), A.end(), x), x);
            else if(op == 2) A.erase(lower_bound(A.begin(), A.end(), x));
            else if(op == 3) printf("%d\n", lower_bound(A.begin(), A.end(), x) - A.begin() + 1);
            else if(op == 4) printf("%d\n", A[x-1]);
            else if(op == 5){
                int pos = lower_bound(A.begin(), A.end(), x)-A.begin();
                printf("%d\n", A[--pos]);
            }
            else{
                int pos = upper_bound(A.begin(), A.end(), x)-A.begin();
                printf("%d\n",A[pos]);
            }
        }
        
        return 0;
    }
    
  • 相关阅读:
    Bootstrap 、AngularJs
    spring boot 随手记
    STOMP
    socket、web socket
    spring boot (2):spring boot 打包tomcat、tomcat 部署多个项目、服务器部署项目SSL 设置(阿里云)
    spring boot (1):初尝
    SOA、SOAP、RFC、RPC、IETF
    Django中级篇(上)
    面向对象进阶篇
    面向对象基础 反射
  • 原文地址:https://www.cnblogs.com/hanser/p/7685003.html
Copyright © 2020-2023  润新知