【BZOJ 3524】[Poi2014]Couriers 主席树裸题

原创 2017年01月03日 21:20:17

放松一下,直接树上二分就好了。

#include<cstdio>
#include<cstring>
#include<iostream>
#define maxn 500020
using namespace std;
int n,m,ls[maxn*20],rs[maxn*20],s[maxn*20],num,rt[maxn];

void insert(int x,int& y,int l,int r,int id){
	y=++num;ls[y]=ls[x],rs[y]=rs[x],s[y]=s[x]+1;
	if(l==r)return ;
	int mid=l+r>>1;
	if(id>mid)insert(rs[x],rs[y],mid+1,r,id);
	else insert(ls[x],ls[y],l,mid,id);
}
int query(int x,int y,int l,int r,int k){
	if(l==r){
		if(s[y]-s[x]>k)return l;
		else return 0;
	}
	int mid=l+r>>1;
	if(s[ls[y]]-s[ls[x]]>k)return query(ls[x],ls[y],l,mid,k);
	else if(s[rs[y]]-s[rs[x]]>k)return query(rs[x],rs[y],mid+1,r,k);
	else return 0;
}

int main(){
	scanf("%d%d",&n,&m);
	for(int x,i=1;i<=n;i++){
		scanf("%d",&x);
		insert(rt[i-1],rt[i],1,n,x);
	}
	int a,b;
	while(m--){
		scanf("%d%d",&a,&b);
		printf("%d\n",query(rt[a-1],rt[b],1,n,(b-a+1)/2));
	}
	return 0;
}


版权声明:你喜欢就好

相关文章推荐

BZOJ 3524主席树裸题 (雾)

思路: 按权值建一棵主席树 (但是这好像不是正解 空间复杂度是不对的…….)//By SiriusRen #include #include #include using namesp...

【bzoj3524】【Poi2014】【Couriers】可持久化线段树(主席树)水题

[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62485671 向大(hei)佬(e)势力学(di)习...

[BZOJ3524][Poi2014]Couriers(主席树)

真正有信心的人不怕暴露自己的缺点,试图掩盖粉饰才是没有信心的表现。

bzoj3524: [Poi2014]Couriers(主席树)

Description给一个长度为n的序列a。1≤a[i]≤n。 m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0...

BZOJ 3524: [Poi2014]Couriers|主席树

做这个题唯一收获的是一个巨大的bug 此代码自带巨大bug #include #include #include #include #include #include #include #includ...
  • ws_yzy
  • ws_yzy
  • 2016年01月14日 09:43
  • 462

[BZOJ 3524][[Poi2014]Couriers][主席树]

[BZOJ 3524][[Poi2014]Couriers][主席树]题目:给一个长度为n的序列a。1≤a[i]≤n。 m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大...
  • g1n0st
  • g1n0st
  • 2017年02月24日 16:16
  • 147

BZOJ3524[Couriers] 不带修改主席树裸题

bzoj3524 不带修改主席树

BZOJ 3524 [Poi2014]Couriers 可持久化线段树

BZOJ 3524 [Poi2014]Couriers 可持久化线段树
  • wzq_QwQ
  • wzq_QwQ
  • 2015年07月31日 17:50
  • 925

bzoj 3524: [Poi2014]Couriers

Description 给一个长度为n的序列a。1≤a[i]≤n。 m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出...
  • lqybzx
  • lqybzx
  • 2015年02月22日 11:30
  • 336

BZOJ3524: [Poi2014]Couriers

题目大意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 裸的主席树啊,只需要每次走大于一半的那面就行了,两边都不符合就是没有啦! #include #include usin...
  • commonc
  • commonc
  • 2016年05月12日 15:55
  • 286
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【BZOJ 3524】[Poi2014]Couriers 主席树裸题
举报原因:
原因补充:

(最多只允许输入30个字)