• 权值线段树


    /*
     * 权值线段树
     * 仅能维护小数值数据.对于大数值数据需离散化,但会从在线数据结构退化为离线数据结构.
     * 本质上,权值线段树就是线段树的一种特殊维护
     * 
     * 权值线段树是主席树前置知识
    */
    
    /*
     * Description
     * [模板]权值线段树: 请使用权值线段树,实现以下操作
     * -1:插入数x
     * -2:删除数x
     * -3:查询当前比数x小的数的个数
     * -4:查询排名为k的数
     * 
     * 数据范围: 1 <= x <= 1e6 
    */
    
    
    #include <cstdio>
    const int N = 1e6+5;
    
    int tree[N<<2];
    void update(int l,int r,int rt,int num,int delta){ // 操作1,2
        tree[rt] += delta;
        if(l == r){
            return;
        }else{
            int mid = l+r>>1;
            if(num <= mid){
                update(l,mid,rt<<1,num,delta);
            }else{
                update(mid+1,r,rt<<1|1,num,delta);
            }
        }
    }
    
    int countlower(int l,int r,int rt,int num){
        if(r < p){
            return tree[rt];
        }else{
            int ans = 0;
            ans += rank(l,l+r>>1,rt<<1,num); // [l,mid]有多少数小于num
            if(1+(l+r>>1) < num){ // [mid+1,r] 有多少数小于num
                ans += rank(1+(l+r>>1),r,rt<<1|1,num);
            }
            return res;
        }
    }
    
    
    int kmin(int l,int r,int rt,int k){
        while(l < r){
            if(k <= tree[rt]){
                r = l+r>>1;
                rt = rt<<1;
            }else{
                l = (l+r>>1)+1;
                rt = rt<<1|1;
                k -= tree[rt<<1];
            }
        }
        return l;
    }
    
    
    
    ---- suffer now and live the rest of your life as a champion ----
  • 相关阅读:
    sass---基本语法
    sass--概述与基本操作手册
    DOS命令--基本常用命令
    PHP中的几种输出格式
    PHP操控数据库
    MySQL数据库
    前端小知识
    TextView控件的介绍及实现跑马灯的效果
    枚举类型和 struct类型
    Button的四种监听方式
  • 原文地址:https://www.cnblogs.com/popodynasty/p/13956201.html
Copyright © 2020-2023  润新知