码迷,mamicode.com
首页 > 其他好文 > 详细

主席树模板

时间:2018-03-04 21:22:25      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:style   query   int   模板   sum   print   思想   return   define   

这里没有思想,没有光,没有热,只有寒冷和永无止境的黑暗。

还有.赤裸裸的主席树代码(求区间第K大)

注意保险起见内存开30倍

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<queue>
 6 #include<cstring>
 7 #include<string>
 8 #include<map>
 9 #define ll long long
10 #define DB double
11 #define eps 1e-3
12 #define inf 2147483647
13 #define mod  100000007
14 using namespace std;
15 inline int read()
16 {
17     int x=0,w=1;char ch=getchar();
18     while(!isdigit(ch)){if(ch==-) w=-1;ch=getchar();}
19     while(isdigit(ch)) x=(x<<3)+(x<<1)+ch-0,ch=getchar();
20     return x*w;
21 }
22 const int N=2e5+10;
23 int n,Q,k;
24 int cnt,a[N],b[N],ls[N*30],rs[N*30],sum[N*30];
25 int rt[N*30];
26 void add(int &nw,int last,int l,int r,int p)
27 {
28     nw=++cnt;
29     ls[nw]=ls[last];rs[nw]=rs[last];
30     sum[nw]=sum[last]+1;
31     if(l==r) return;
32     int mid=(l+r)>>1;
33     if(p<=mid) add(ls[nw],ls[last],l,mid,p);
34     else add(rs[nw],rs[last],mid+1,r,p);
35 }
36 int query(int x,int y,int l,int r,int k)
37 {
38     if(l==r) return l;
39     int mid=(l+r)>>1;
40     int u=sum[ls[y]]-sum[ls[x]];
41     if(k<=u) return query(ls[x],ls[y],l,mid,k);
42     else return query(rs[x],rs[y],mid+1,r,k-u);
43 }
44 int main()
45 {
46     n=read();Q=read();
47     for(int i=1;i<=n;++i) a[i]=read(),b[i]=a[i];
48     sort(b+1,b+n+1);
49     k=unique(b+1,b+n+1)-b-1;
50     for(int i=1;i<=n;++i)
51      a[i]=lower_bound(b+1,b+k+1,a[i])-b;
52     for(int i=1;i<=n;++i)
53      add(rt[i],rt[i-1],1,k,a[i]);
54     while(Q--)
55     {
56         int l,r,x;l=read();r=read();x=read();
57         int pos=query(rt[l-1],rt[r],1,k,x);
58         printf("%d\n",b[pos]);
59     }
60     return 0;
61 }

…φ(?????)? 学习是我的全部

主席树模板

标签:style   query   int   模板   sum   print   思想   return   define   

原文地址:https://www.cnblogs.com/adelalove/p/8505562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!