bzoj3524: [Poi2014]Couriers&&2223: [Coci 2009]PATULJCI
2017-08-28 21:46
459 查看
主席树模板题。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int read() { char ch=getchar();int f=0; while(ch<'0'||ch>'9') ch=getchar(); while(ch>='0'&&ch<='9') {f=f*10+(ch^48);ch=getchar();} return f; } int son[10000005][2],sum[10000005],root[500005],n,m,sz; void add(int x,int &y,int l,int r,int k) { y=++sz; sum[y]=sum[x]+1; if(l==r) return; son[y][0]=son[x][0],son[y][1]=son[x][1]; int mid=l+r>>1; if(k<=mid) add(son[x][0],son[y][0],l,mid,k); else add(son[x][1],son[y][1],mid+1,r,k); } int query(int L,int R) { int l=1,r=n,mid,x,y,tmp=(R-L+1)>>1; x=root[L-1],y=root[R]; while(l!=r) { mid=l+r>>1; if(sum[y]-sum[x]<=tmp) return 0; if(sum[son[y][0]]-sum[son[x][0]]>tmp) { r=mid; x=son[x][0],y=son[y][0]; } else if(sum[son[y][1]]-sum[son[x][1]]>tmp) { l=mid+1,x=son[x][1],y=son[y][1]; } else return 0; } return l; } int main() { n=read(),m=read(); for(int i=1;i<=n;i++) { int x=read(); add(root[i-1],root[i],1,n,x); } for(int i=1;i<=m;i++) { int l=read(),r=read(); printf("%d\n",query(l,r)); } }
相关文章推荐
- 【BZOJ】3524 [Poi2014]Couriers && 【BZOJ】2223 [Coci 2009]PATULJCI 主席树
- [主席树] BZOJ 3524 [Poi2014]Couriers BZOJ 2223 [Coci 2009]PATULJCI
- 【bzoj3524/2223】[Poi2014]Couriers/[Coci 2009]PATULJCI 主席树
- [BZOJ3524] [Poi2014]Couriers/[BZOJ2223] [Coci 2009]PATULJCI
- BZOJ2223: [Coci 2009]PATULJCI&&BZOJ3524: [Poi2014]Couriers
- BZOJ3524: [Poi2014]Couriers/BZOJ2223: [Coci 2009]PATULJCI
- BZOJ3524 & LOJ2432:[POI2014]代理商Couriers——题解
- [bzoj3524/2223][Poi2014]Couriers_主席树
- BZOJ2223 [Coci 2009]PATULJCI 题解&代码
- 3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI
- 【BZOJ3524/2223】[Poi2014]Couriers 主席树
- bzoj3524/2223 [Poi2014]Couriers
- 3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI 主席树
- BZOJ3524 POI2014 Couriers 题解&代码
- 【bzoj3524】【Poi2014】【Couriers】可持久化线段树(主席树)水题
- BZOJ 3524: [Poi2014]Couriers( 主席树 )
- [bzoj3524][Poi2014]Couriers 主席树
- bzoj2223: [Coci 2009]PATULJCI
- bzoj2223: [Coci 2009]PATULJCI 主席树
- [BZOJ 3524][Poi2014]Couriers:可持久化线段树