zoukankan      html  css  js  c++  java
  • 主席树模板

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    
    const int M = 50006;
    int w[M], a[M], root[M];
    struct Tree{
        int ls, rs, w;
    } tr[M << 4] ;
    
    int tot ;
    
    void insert(int &x, int l, int r, int d){
        tr[++tot] = tr[x];
        tr[tot].w ++;
        x = tot;
        if(l == r) return ;
        int m = (l+r) >> 1; 
        if(d <= m) insert(tr[tot].ls, l, m, d);
        else insert(tr[tot].rs, m+1, r, d);
    }
    int query(int rt, int R, int l, int r){
        if(l == r) return tr[rt].w;
        if(R >= r) return tr[rt].w;
        int m = (l + r) >> 1;
        int ret = 0;
        if(m <= R) ret += query(tr[rt].ls, R, l, m);
        if(R > m) ret += query(tr[rt].rs, R, m+1, r);
        return ret;
    }
    
    int main(){
        int T;
        scanf("%d", &T);
        int m, n, l, r, b;
        while(T -- ){
            scanf("%d%d", &n, &m);
            int tt = 0;
            for(int i = 1; i <= n; i ++){
                scanf("%d", a[i]);
                w[tt ++] = a[i];
            }
            sort(w, w+tt);
            int u = unique(w, w+tt) - w;
            root[0] = 0;
            for(int i = 1; i <= n; i ++){
                int d = lower_bound(w, w+u, a[i]) - w;
                root[i] = root[i-1];
                insert(root[i], 0, u-1, d);
            }
            while(m --){
                scanf("%d%d%d%d", &l, &r, &a, &b);
                int rr = lower_bound(w, w+u, b) - w;
                int ll = lower_bound(w, w+u, a+1) - w - 1;
                int ans = query(root[r], rr, 0, u-1) - query(root[l-1], ll, 0, u-1);
            }
        }
        return 0;
    }
    

      忘记是哪里的题目了~~就是个主席树的模板,保存一下。。。

  • 相关阅读:
    Elasticsearch-PHP 索引操作2
    Elasticsearch-PHP 索引操作
    Linux系统编程1_C标准函数库和系统调用
    Git命令_git commit
    Git命令_git log
    Linux27_配置samba
    计算机网络12_整理
    理解操作系统8——字符设备与块设备
    网站开发基础知识3_会话和cookie
    网站开发基础知识2_前后端分离
  • 原文地址:https://www.cnblogs.com/acmood/p/4449037.html
Copyright © 2011-2022 走看看