美文网首页
静态主席树

静态主席树

作者: 影踪派熊猫人武僧 | 来源:发表于2019-04-07 14:51 被阅读0次
#include<bits/stdc++.h>
#define int long long
#define maxn 50000
using namespace std;
inline char get(){
    static char buf[30000],*p1=buf,*p2=buf;
    return p1==p2 && (p2=(p1=buf)+fread(buf,1,30000,stdin),p1==p2)?EOF:*p1++;
}
inline int read(){
    register char c=get();register int f=1,_=0;
    while(c>'9' || c<'0')f=(c=='-')?-1:1,c=get();
    while(c<='9' && c>='0')_=(_<<3)+(_<<1)+(c^48),c=get();
    return _*f; 
}
int num,n,q;
int a[maxn],b[maxn],c[maxn],T[maxn];
int lc[maxn<<5],rc[maxn<<5],tree[maxn<<5];
int build(int l,int r){
    int id=++num,mid=(l+r)>>1;
    if(l!=r){
        lc[id]=build(l,mid);
        rc[id]=build(mid+1,r);
    }
    return id;
}
int update(int pre_id,int l,int r,int x,int v){
    int id=++num,mid=(l+r)>>1;
    lc[id]=lc[pre_id],rc[id]=rc[pre_id],tree[id]=tree[pre_id]+v;
    if(l!=r){
        if(x<=mid)lc[id]=update(lc[id],l,mid,x,v);
        else rc[id]=update(rc[id],mid+1,r,x,v);
    }
    return id;
}
int query(int l,int r,int x,int y,int k){
    if(l==r)return l;
    int mid=(l+r)>>1;
    int cas_l=tree[lc[y]]-tree[lc[x]];
    if(cas_l>=k)return query(l,mid,lc[x],lc[y],k);
    else return query(mid+1,r,rc[x],rc[y],k-cas_l);
}
signed main(){
    n=read(),q=read();
    for(register int i=1;i<=n;i++)a[i]=b[i]=read();
    sort(a+1,a+1+n);
    int m=unique(a+1,a+1+n)-a-1;
    T[0]=build(1,m);
    for(register int i=1;i<=n;i++)c[i]=lower_bound(a+1,a+1+m,b[i])-a,T[i]=update(T[i-1],1,m,c[i],1);
    while(q--){
        int l=read(),r=read(),k=read();
        cout<<a[query(1,m,T[l-1],T[r],k)]<<endl;
    }
    return 0;
}

相关文章

  • 静态主席树

    主席树的作用是寻找一个序列的某个区间的第k大(小)如:给出一个序列a1,a2...an,有若干个询问,每个询问形如...

  • 静态主席树

  • 可持久化线段树

    题目链接:可持久化数组 可持久化数组: 题目链接:Kth number 静态主席树: 题目链接:Dynamic R...

  • 主席树

    主席树当然是很厉害的呀【BZOJ 1901】 Zju2112 Dynamic Rankings各种线段树https...

  • 主席树(静态) 图文讲解让你一次就懂 hdu2665为例

    主席树 先介绍一下主席树,主席树也称函数式线段树也称可持久化线段树。(其实就是支持查询历史版本,这个在看完之后就会...

  • 可修改主席树

    普通主席树 普通主席树比较简单 就是很多个权值线段树 每一次加进去log个节点(每层一个),剩下的节点用原来的线段...

  • github io

    静态网页。 红黑树,B树 太平天国农民起义。

  • 二叉搜索树、平衡二叉树

    -二叉搜索树 查找问题:静态查找和动态查找,静态查找可以用二分查找-判定树,那么针对动态查找数据如何组织?(树的动...

  • 树的遍历

    树的静态写法 树的遍历 1079 Total Sales of Supply Chain 1090 Highest...

  • 树的静态写法

    这里的树是指一般意义上的树,即子结点个数不限且子结点没有先后次序的树,而不是上文讨论的二叉树。 struct no...

网友评论

      本文标题:静态主席树

      本文链接:https://www.haomeiwen.com/subject/tkdsiqtx.html