3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI
来源:互联网 发布:js点击弹出再点击隐藏 编辑:程序博客网 时间:2024/05/16 23:53
题目链接
题目大意:给一个长度为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,rint 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;}
阅读全文
0 0
- 3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI
- bzoj3524: [Poi2014]Couriers&&2223: [Coci 2009]PATULJCI
- 3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI 主席树
- 【bzoj3524/2223】[Poi2014]Couriers/[Coci 2009]PATULJCI 主席树
- BZOJ2223: [Coci 2009]PATULJCI&&BZOJ3524: [Poi2014]Couriers
- [BZOJ3524] [Poi2014]Couriers/[BZOJ2223] [Coci 2009]PATULJCI
- BZOJ3524: [Poi2014]Couriers/BZOJ2223: [Coci 2009]PATULJCI
- [主席树] BZOJ 3524 [Poi2014]Couriers BZOJ 2223 [Coci 2009]PATULJCI
- 【BZOJ】3524 [Poi2014]Couriers && 【BZOJ】2223 [Coci 2009]PATULJCI 主席树
- bzoj 2223: [Coci 2009]PATULJCI
- BZOJ 2223: [Coci 2009]PATULJCI
- BZOJ 2223: [Coci 2009]PATULJCI
- [分块 随机化] BZOJ 2223 [Coci 2009]PATULJCI
- 【BZOJ 2223】 [Coci 2009]PATULJCI 主席树
- BZOJ 2223: [Coci 2009]PATULJCI 主席树
- BZOJ 2223 [Coci 2009]PATULJCI 主席树
- [BZOJ2223][Coci 2009]PATULJCI
- bzoj2223[Coci 2009] PATULJCI
- SAP内存和ABAP内存的简单介绍说明
- 小白算法练习 hdu courses 1083 匈牙利算法 dfs 邻接矩阵 vector模拟邻接表
- POJ2243 Knight Moves —— A*算法
- 数学之美 贝叶斯 (转载:推荐)
- 【python 验证码】产生中文验证码
- 3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI
- 多态
- php中的无限极分类
- 使用netty结合Protostuff传输对象例子
- 解决Apache长时间占用内存大的问题,Apache 内存优化方法
- 九宫格
- 云计算的三大挑战:安全性、合规性和成本控制
- 元素各种水平垂直居中方式
- bzoj2648 SJY摆棋子(不带修改的KDtree的学习)