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

    //贴个主席树板子
    #include<bits/stdc++.h> using namespace std; #define pb push_back #define sc(x) scanf("%lld",&x); #define int long long #define fi first #define se second #define endl ' ' #define P pair<int,int> int cnt; struct Node{ int l,r,sum; }; const int maxn = 2e5+5; Node A[maxn*40]; int a[maxn]; int root[maxn]; vector<int> v; void insert(int x,int l,int r,int pre,int &cur) { A[++cnt] = A[pre]; cur = cnt; A[cur].sum++; if(l==r){ return; } int m = (l+r)>>1; if(x <= m)insert(x,l,m,A[pre].l,A[cur].l); else insert(x,m+1,r,A[pre].r,A[cur].r); } int query(int l,int r,int L,int R,int k) { if(l==r){ return l; } int m = (l+r)>>1; int tmp = A[A[R].l].sum-A[A[L].l].sum; if(tmp>=k){ return query(l,m,A[L].l,A[R].l,k); }else return query(m+1,r,A[L].r,A[R].r,k-tmp); } signed main() { int n,m; sc(n)sc(m) for(int i =0 ;i < n;i++){ sc(a[i]) v.pb(a[i]); } sort(v.begin(),v.end()); int z = unique(v.begin(),v.end())-v.begin(); for(int i=0;i<n;i++){ int id = lower_bound(v.begin(),v.begin()+z,a[i])-v.begin()+1; insert(id,1,n,root[i],root[i+1]); } int l,r,k; for(int i=0;i<m;i++){ sc(l)sc(r)sc(k) //cout<<(query(1,n,root[l-1],root[r],k)-1)<<endl; cout<<v[query(1,n,root[l-1],root[r],k)-1]<<' '; } }
  • 相关阅读:
    Spring&AOP&JDK和Cglib动态代理&AspectJ进行AOP开发(XML方式)
    python 切换工作目录
    python 布隆过滤器
    python sys.path.append()
    python encrypt 实现AES加密
    python 魔术方法
    python re匹配中文和非中文
    python 文件整理 shutil
    python定时任务框架
    mac 系统修改环境变量
  • 原文地址:https://www.cnblogs.com/liulex/p/12945146.html
Copyright © 2011-2022 走看看