【Luogu】P3567Kur-Couriers(主席树)
2024-08-23 05:50:44
数组大小开到一千二百万才过- -
可以把数先离散化再全都加到主席树中。
对于一个区间[from,to]
取中间点mid
看看小于mid的数有多少个,如果个数的两倍<=to-from+1那么左边就不存在我们要找的数。
右面同理。如果大于mid的数<=to-from+1那么右面也不存在我们要找的数。
如果两边都不存在就return 0;
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cstdlib>
#include<algorithm>
#define mid ((l+r)>>1)
using namespace std; inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long rt[];
long long ls[];
long long rs[];
long long sum[];
long long q[];
long long s[];
int tot; void build(long long &o,int l,int r){
o=++tot; sum[o]=;
if(l==r) return;
build(ls[o],l,mid);
build(rs[o],mid+,r);
} void update(long long &o,int l,int r,long long last,long long p){
o=++tot;
ls[o]=ls[last]; rs[o]=rs[last]; sum[o]=sum[last]+;
if(l==r) return;
if(p<=mid) update(ls[o],l,mid,ls[last],p);
else update(rs[o],mid+,r,rs[last],p);
} int query(int from,int to,int l,int r,int p){
if(l==r) return l;
if(*(sum[ls[to]]-sum[ls[from]])>p) return query(ls[from],ls[to],l,mid,p);
if(*(sum[rs[to]]-sum[rs[from]])>p) return query(rs[from],rs[to],mid+,r,p);
return ;
} int main(){
int n=read(),m=read();
for(int i=;i<=n;++i) s[i]=q[i]=read();
sort(s+,s+n+);
int size=unique(s+,s+n+)-(s+);
build(rt[],,size);
for(int i=;i<=n;++i) q[i]=lower_bound(s+,s+size+,q[i])-s;
for(int i=;i<=n;++i) update(rt[i],,size,rt[i-],q[i]);
for(int i=;i<=m;++i){
int from=read(),to=read();
printf("%lld\n",s[query(rt[from-],rt[to],,size,to-from+)]);
}
return ;
}
最新文章
- ASP.NET Core 中文文档 第三章 原理(12)托管
- (转)SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
- oracle 卸载步骤(图解)
- PHP 防止表单重复提交
- p::first-line { text-transform: uppercase }
- 20150625_Andriod_01_ListView1_条目选中
- tyvj1022 - 进制转换 ——进制为负数
- 传统企业,";哀兵必胜";的想法要不得
- 【c】time.h
- windows下用过VMware安装MAC OS X苹果系统
- UML 行为图之用例图 总结
- fedora23开发环境搭建手册
- Android TextView里直接显示图片的三种方法
- js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?
- 虚拟机通信配置与Xshell连接
- 微信小程序路过
- [BZOJ3668] [Noi2014] 起床困难综合症 (贪心)
- tp3.2 phpexcel 简单导出多个sheet(execl表格)
- 20145212 罗天晨 MSF基础应用
- HDU 1014 G题