3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI
2017-08-28 15:24
260 查看
题目链接
题目大意:给一个长度为n的序列a,1≤a[i]≤n。m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2
题解:主席数基本应用,建出主席树,用前缀和取出区间[l,r]的树,然后左边大于(r-l+1)/2就往坐找,右边大于就往右找,都不大于就返回0
我的收获:主席树强啊
题目大意:给一个长度为n的序列a,1≤a[i]≤n。m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2
题解:主席数基本应用,建出主席树,用前缀和取出区间[l,r]的树,然后左边大于(r-l+1)/2就往坐找,右边大于就往右找,都不大于就返回0
我的收获:主席树强啊
#include<cstdio> #include<algorithm> using namespace std; #define M 500005 #define MX M*20 #define lson tl[x],tl[y],l,mid #define rson tr[x],tr[y],mid+1,r int n,m,cnt,x,y; int root[M],a[M]; int tl[MX],tr[MX],sum[MX]; inline void node(int &x,int w){x=++cnt,sum[x]=sum[w]+1,tl[x]=tl[w],tr[x]=tr[w];} void insert(int x,int &y,int l,int r,int k) { node(y,x); if(l==r) return ; int mid=(l+r)>>1; if(k<=mid) insert(lson,k); else insert(rson,k); } int query(int x,int y,int l,int r,int k) { if(l==r) return l; int mid=(l+r)>>1; if(sum[tl[y]]-sum[tl[x]]>k) return query(lson,k); if(sum[tr[y]]-sum[tr[x]]>k) return query(rson,k); return 0; } void work() { for(int i=1;i<=m;i++){ scanf("%d%d",&x,&y); printf("%d\n",query(root[x-1],root[y],1,n,(y-x+1)/2)); } } void init() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) insert(root[i-1],root[i],1,n,a[i]); } int main() { init(); work(); return 0; }
相关文章推荐
- 3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI 主席树
- [主席树] BZOJ 3524 [Poi2014]Couriers BZOJ 2223 [Coci 2009]PATULJCI
- 【BZOJ】3524 [Poi2014]Couriers && 【BZOJ】2223 [Coci 2009]PATULJCI 主席树
- bzoj3524: [Poi2014]Couriers&&2223: [Coci 2009]PATULJCI
- 【bzoj3524/2223】[Poi2014]Couriers/[Coci 2009]PATULJCI 主席树
- [BZOJ3524] [Poi2014]Couriers/[BZOJ2223] [Coci 2009]PATULJCI
- BZOJ3524: [Poi2014]Couriers/BZOJ2223: [Coci 2009]PATULJCI
- BZOJ2223: [Coci 2009]PATULJCI&&BZOJ3524: [Poi2014]Couriers
- [bzoj3524==bzoj2223][Poi2014]Couriers/[Coci 2009]PATULJCI——主席树+权值线段树
- bzoj3524/2223 [Poi2014]Couriers
- 【BZOJ】【3524】【POI2014】Couriers
- 【BZOJ】【2223】【COCI 2009】PATULJCI
- bzoj3524【POI2014】Couriers
- 3524: [Poi2014]Couriers
- bzoj2223: [Coci 2009]PATULJCI
- bzoj 3524: [Poi2014]Couriers(主席树)
- BZOJ 3524: [Poi2014]Couriers
- BZOJ 2223: [Coci 2009]PATULJCI 主席树
- [BZOJ3524][Poi2014]Couriers(主席树)
- 【BZOJ】【P2223】【Coci 2009】【PATULJCI】【题解】【整体二分】