【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 4504: K个串 主席树

首先来看如何快速求出区间[l,r]的答案。预处理pre[i]表示和a[i]相同的数上一次出现的位置,如果a[i]第一次出现则per[i]=0。那么[l,r]的答案就相当于求[l,r]中所有pre[] ...
  • lych_cys
  • lych_cys
  • 2016年04月08日 15:57
  • 1248

bzoj 3065: 带插入区间K小值 替罪羊树套主席树

省选的时候听来一个分块做法,就是按照询问Q每Q^0.5分一块然后块与块之间暴力重构。        或者用权值线段树套替罪羊树,具体可以见clj《重量平衡树和后缀平衡树在信息学中的应用》中一道例题。 ...
  • lych_cys
  • lych_cys
  • 2016年03月24日 20:17
  • 1455

BZOJ3932: [CQOI2015]任务查询系统 主席树

3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 1551  Solved: 572 [Submit]...
  • Oakley_
  • Oakley_
  • 2016年08月19日 14:27
  • 1323

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

[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62485671 向大(hei)佬(e)势力学(di)习...
  • coco56181712
  • coco56181712
  • 2017年07月21日 17:11
  • 135

[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
  • 162

bzoj3524 [Poi2014]Couriers(主席树查询第k小)

这题改了半天,我怕不是个sb x。一个区间内出现次数大于r-l+1>>1的数最多就有一个啊!,所以直接在线段树上找复杂度不会有问题的。...
  • Icefox_zhx
  • Icefox_zhx
  • 2017年12月02日 13:53
  • 62

bzoj3524: [Poi2014]Couriers(主席树)

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

BZOJ 3524: [Poi2014]Couriers|主席树

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

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

真正有信心的人不怕暴露自己的缺点,试图掩盖粉饰才是没有信心的表现。
  • Clove_unique
  • Clove_unique
  • 2016年05月02日 17:33
  • 731

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

bzoj3524 不带修改主席树
  • qq_37321281
  • qq_37321281
  • 2017年08月07日 16:58
  • 110
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【BZOJ 3524】[Poi2014]Couriers 主席树裸题
举报原因:
原因补充:

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