【bzoj3524】 [Poi2014]Couriers
来源:互联网 发布:电脑连接的常用端口 编辑:程序博客网 时间:2024/05/22 12:26
Description
给一个长度为n的序列a。1≤a[i]≤n。
m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。
Input
第一行两个数n,m。
第二行n个数,a[i]。
接下来m行,每行两个数l,r,表示询问[l,r]这个区间。
Output
m行,每行对应一个答案。
Sample Input
7 5
1 1 3 2 3 4 3
1 3
1 4
3 7
1 7
6 6
1 1 3 2 3 4 3
1 3
1 4
3 7
1 7
6 6
Sample Output
1
0
3
0
4
0
3
0
4
HINT
【数据范围】
n,m≤500000
Solve
可持久化线段树,在每个节点判断是否满足即可。
#include<iostream>#include<cstdlib>#include<cstdio>using namespace std;const int N=10000000;int n,m,x,y,cnt;int root[N],ls[N],rs[N],sum[N];void update(int r1,int &r2,int l,int r,int key){ if (!r2)r2=++cnt; sum[r2]=sum[r1]+1; if (l==r)return; ls[r2]=ls[r1];rs[r2]=rs[r1]; int mid=(l+r)>>1; if (key<=mid)update(ls[r1],(ls[r2]=0),l,mid,key); else update(rs[r1],(rs[r2]=0),mid+1,r,key);}int query(int r1,int r2,int l,int r){ if (l==r) if ((sum[r2]-sum[r1])*2>(y-x+1))return l; else return 0; int mid=(l+r)>>1; if (sum[rs[r2]]-sum[rs[r1]]<sum[ls[r2]]-sum[ls[r1]]) return query(ls[r1],ls[r2],l,mid); else return query(rs[r1],rs[r2],mid+1,r);}int main (){ scanf ("%d%d",&n,&m); for (int i=1;i<=n;++i){ scanf ("%d",&x); update(root[i-1],root[i],1,n,x); } for (int i=1;i<=m;++i){ scanf ("%d%d",&x,&y); printf ("%d\n",query(root[x-1],root[y],1,n)); } return 0;}
阅读全文
0 0
- [Bzoj3524][Poi2014]Couriers
- bzoj3524[Poi2014]Couriers
- 【Poi2014】【BZOJ3524】Couriers
- [BZOJ3524][Poi2014]Couriers
- bzoj3524【POI2014】Couriers
- Bzoj3524:[Poi2014]Couriers
- bzoj3524: [Poi2014]Couriers
- BZOJ3524: [Poi2014]Couriers
- bzoj3524 [Poi2014]Couriers
- BZOJ3524 [Poi2014]Couriers
- BZOJ3524[Poi2014] Couriers
- 【bzoj3524】[Poi2014]Couriers
- 【bzoj3524】 [Poi2014]Couriers
- BZOJ3524 [Poi2014]Couriers
- BZOJ3524 POI2014 Couriers 题解&代码
- 【BZOJ3524】[Poi2014]Couriers【主席树】
- [bzoj3524][Poi2014]Couriers 主席树
- 【主席树】BZOJ3524 [Poi2014]Couriers
- 百练4982 踩方格
- linux复习之进程基础知识
- Contiki系统关于PROCESS_CONTEXT_BEGIN与PROCESS_CONTEXT_END见解
- H.264句法语义学习
- IO流与多线程
- 【bzoj3524】 [Poi2014]Couriers
- TCP四次挥手中的TIME_WAIT状态存在的理由
- 集合与泛型
- 树的直径
- 瓜田李下
- 文件压缩和归档
- 基础API与异常处理
- 优先队列
- java web 笔记(一):Cookie和Session