• poj2104 K-th Number


    传送门

    题解

    话说……这完全就是个板子吧啊喂……

    不过更好奇的是为什么我第一次交竟然会WA???

    不知道主席树是什么的可以看看这篇文章

     1 //minamoto
     2 #include<bits/stdc++.h>
     3 #define N 100005
     4 using namespace std;
     5 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
     6 char buf[1<<21],*p1=buf,*p2=buf;
     7 inline int read(){
     8     #define num ch-'0'
     9     char ch;bool flag=0;int res;
    10     while(!isdigit(ch=getc()))
    11     (ch=='-')&&(flag=true);
    12     for(res=num;isdigit(ch=getc());res=res*10+num);
    13     (flag)&&(res=-res);
    14     #undef num
    15     return res;
    16 }
    17 int sum[N<<5],L[N<<5],R[N<<5];
    18 int a[N],b[N],rt[N];
    19 int n,q,m,cnt=0;
    20 void update(int last,int &now,int l,int r,int x){
    21     sum[now=++cnt]=sum[last]+1;
    22     if(l==r) return;
    23     int mid=(l+r)>>1;
    24     if(x<=mid) R[now]=R[last],update(L[last],L[now],l,mid,x);
    25     else L[now]=L[last],update(R[last],R[now],mid+1,r,x);
    26 }
    27 int query(int u,int v,int l,int r,int k){
    28     if(l>=r) return l;
    29     int x=sum[L[v]]-sum[L[u]];
    30     int mid=(l+r)>>1;
    31     if(x>=k) return query(L[u],L[v],l,mid,k);
    32     else return query(R[u],R[v],mid+1,r,k-x);
    33 }
    34 int main(){
    35     //freopen("testdata.in","r",stdin);
    36     n=read(),q=read();
    37     for(int i=1;i<=n;++i)
    38     b[i]=a[i]=read();
    39     sort(b+1,b+1+n);
    40     m=unique(b+1,b+1+n)-b-1;
    41     for(int i=1;i<=n;++i){
    42         int k=lower_bound(b+1,b+1+m,a[i])-b;
    43         update(rt[i-1],rt[i],1,m,k);
    44     }
    45     while(q--){
    46         int x,y,z;
    47         x=read(),y=read(),z=read();
    48         int k=query(rt[x-1],rt[y],1,m,z);
    49         printf("%d
    ",b[k]);
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    Hash
    字符串hash
    NOIp 2014解方程
    NOIp2014 寻找道路
    NOIp2013火柴排队
    用scanf("%d",)读入long long类型
    lis问题
    西江月·证明
    计算系数
    积木大赛&PLA-Postering
  • 原文地址:https://www.cnblogs.com/bztMinamoto/p/9392282.html
Copyright © 2020-2023  润新知