BZOJ5178[Jsoi2011]棒棒糖——主席树
题目描述
输入
输出
样例输入
1
2
2
1
1
1 5
2 5
2 4
样例输出
0
2
棒棒糖1..5中,口味1的棒棒糖有3只,一共5只棒棒糖,而3>5/2=2.5,所以主要口味为1。棒棒糖2..5中,一共4只
棒棒糖,没有一种口味的棒棒糖个数严格大于4/2=2,所以是混合口味的。棒棒糖2..4中,一共3只棒棒糖,口味2
的棒棒糖有2只,2>3/2=1.5,主要口味为2。
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int x,y;
int cnt;
int ls[2000010];
int rs[2000010];
int root[50010];
int sum[2000010];
int updata(int pre,int l,int r,int v)
{
int rt=++cnt;
if(l==r)
{
sum[rt]=sum[pre]+1;
return rt;
}
ls[rt]=ls[pre];
rs[rt]=rs[pre];
sum[rt]=sum[pre]+1;
int mid=(l+r)>>1;
if(v<=mid)
{
ls[rt]=updata(ls[pre],l,mid,v);
}
else
{
rs[rt]=updata(rs[pre],mid+1,r,v);
}
return rt;
}
int query(int x,int y,int v,int l,int r)
{
if(l==r)
{
if(sum[y]-sum[x]>v)
{
return l;
}
else
{
return 0;
}
}
int num=sum[ls[y]]-sum[ls[x]];
int mid=(l+r)>>1;
if(num>v)
{
return query(ls[x],ls[y],v,l,mid);
}
else
{
return query(rs[x],rs[y],v,mid+1,r);
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
root[i]=updata(root[i-1],1,50000,x);
}
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
printf("%d\n",query(root[x-1],root[y],(y-x+1)/2,1,50000));
}
}
BZOJ5178[Jsoi2011]棒棒糖——主席树的更多相关文章
- bzoj5178 [Jsoi2011]棒棒糖   主席树+线段树二分
		题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5178 https://lydsy.com/JudgeOnline/problem.php?id ... 
- 【bzoj5178】[Jsoi2011]棒棒糖  主席树
		题目描述 Coffee的世界里也是有棒棒糖卖的,Coffee买了N(1≤N≤50000)只连着的.这N只棒棒糖包裹在小塑料袋中,排成一列,相邻的两只棒棒糖的塑料袋是接起来的.为了方便,我们把棒棒糖从左 ... 
- bzoj5178: [Jsoi2011]棒棒糖
		就是裸的主席树嘛... 表扬一下自己1A #include<cstdio> #include<iostream> #include<cstring> #includ ... 
- bzoj3207--Hash+主席树
		题目大意: 给定一个n个数的序列和m个询问(n,m<=100000)和k,每个询问包含k+2个数字:l,r,b[1],b[2]...b[k],要求输出b[1]~b[k]在[l,r]中是否出现. ... 
- bzoj1901--树状数组套主席树
		树状数组套主席树模板题... 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[ ... 
- BZOJ 3626: [LNOI2014]LCA [树链剖分 离线|主席树]
		3626: [LNOI2014]LCA Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2050 Solved: 817[Submit][Status ... 
- BZOJ 1146: [CTSC2008]网络管理Network [树上带修改主席树]
		1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 3522 Solved: 1041[Submi ... 
- BZOJ 2588: Spoj 10628. Count on a tree [树上主席树]
		2588: Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MBSubmit: 5217 Solved: 1233 ... 
- BZOJ 1901: Zju2112 Dynamic Rankings[带修改的主席树]【学习笔记】
		1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 7143 Solved: 2968[Su ... 
随机推荐
- CF1070L Odd Federalization 高斯消元
			传送门 \(r = 1\)直接判断所有点度数是否为偶数 考虑\(r = 2\)的情况.设\(x_i=0/1\)表示\(i\)点所在的集合,那么若\(2 \mid du_u\),则\(\bigoplus ... 
- Luogu1979 NOIP2013D2T3 华容道 搜索、最短路
			题目传送门 题意:给出一个$N \times M$的棋盘,棋盘上有一些块可以移动,有一些块无法移动.$Q$次询问,每一次询问给出三个块$a,b,c$,将$a$块变为空格,空格旁边可移动的块可以与空格交 ... 
- linux  ssh修改 默认22端口
			修改ssh 配置 /etc/ssh/sshd_config service sshd restart 
- SQL跨服务器查询数据库
			有时候一个项目需要用到两个数据库或多个数据库而且这些数据库在不同的服务器上时,就需要通过跨服务器查找数据 在A服务器的数据库a查询服务器B的数据库b 的bb表 假如服务器B的IP地址为:10.0.22 ... 
- Android开发——ListView使用技巧总结(一)
			)还有一点就是要控制异步任务的执行频率,因为当用户频繁的上下滑动,会瞬间产生上百个异步任务,会带来无意义的大量的UI更新操作,因此可以考虑在列表滑动时停止进行异步任务,直到列表停下来. //判断列表的 ... 
- 【noi.ac】#309. Mas的童年
			#309. Mas的童年 链接 分析: 求$max \{sj + (s_i \oplus s_j)\}$ 因为$a + b = a \oplus b + (a \& b) \times 2$ ... 
- 跨平台、跨语言应用开发,Elements 介绍
			目录 1,Elements 介绍 2,Elements 版本 3,Elements 能干嘛 4,Elements IDES 5,Elements 工具 1,Elements 介绍 RemObject ... 
- [LeetCode] 307. Range Sum Query - Mutable 解题思路
			Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ... 
- sublime text3 安装package control 出现问题解决过程记录
			1.安装package control 失败 通过最简单的自动安装 package control 失败(详见package control官网). 报错展示: File "./python ... 
- NLP笔记:词向量和语言模型
			NLP问题如果要转化为机器学习问题,第一步是要找一种方法把这些符号数学化. 有两种常见的表示方法: One-hot Representation,这种方法把每个词表示为一个很长的向量.这个向量的维度是 ... 
