博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codves 2021中庸之道
阅读量:6498 次
发布时间:2019-06-24

本文共 1908 字,大约阅读时间需要 6 分钟。

2021 中庸之道

题目描述 Description

给定一个长度为N的序列,有Q次询问,每次询问区间[L,R]的中位数。

数据保证序列中任意两个数不相同,且询问的所有区间长度为奇数。

 

输入描述 Input Description

第一行为N,Q。

第二行N个数表示序列。

接下来Q行,每行为L,R,表示一次询问。

 

输出描述 Output Description

输出Q行,对应每次询问的中位数。

 
样例输入 Sample Input

5 3

1 4 8 16 2

1 5

3 5

3 3

样例输出 Sample Output

4

8

8

数据范围及提示 Data Size & Hint

40%的数据,N,Q≤100;

70%的数据,N≤100;

100%的数据,N≤1000,Q≤100000,序列中的元素为1到10^9之间的整数。

套上主席树求第K大模板

区间[l,r]中位数转化:k=(r-l)/2+1

例:[5,9]中位数是第7个,k=(9-5)/2+1=3,是第3大

#include
#include
#include
#include
#define N 100001using namespace std;int n,m,l_child[N*18],r_child[N*18],root[N],sum[N*18],tot,id;int a[N],has[N];int x,y,k,ans,T;void build(int pre,int &now,int key,int l,int r){ sum[now=++id]=sum[pre]+1; if(l==r) return; int mid=(l+r)/2; if(key<=mid) { r_child[now]=r_child[pre]; build(l_child[pre],l_child[now],key,l,mid); } else { l_child[now]=l_child[pre]; build(r_child[pre],r_child[now],key,mid+1,r); }}void discrete(){ sort(a+1,a+n+1); tot=unique(a+1,a+n+1)-(a+1); for(int i=1;i<=n;i++) has[i]=lower_bound(a+1,a+tot+1,has[i])-a;}int search(int s,int t,int k,int l,int r){ if(l==r) return l; int tmp=sum[l_child[t]]-sum[l_child[s]]; int mid=(l+r)/2; if(tmp>=k) return search(l_child[s],l_child[t],k,l,mid); else return search(r_child[s],r_child[t],k-tmp,mid+1,r);}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]),has[i]=a[i]; discrete(); for(int i=1;i<=n;i++) build(root[i-1],root[i],has[i],1,tot); for(int i=1;i<=m;i++) { scanf("%d%d",&x,&y); k=(y-x)/2+1;//转化 ans=search(root[x-1],root[y],k,1,tot); printf("%d\n",a[ans]); } }

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6291149.html

你可能感兴趣的文章
C++vector迭代器失效的问题
查看>>
在Web.config或App.config中的添加自定义配置
查看>>
php源码安全加密之PHP混淆算法.
查看>>
Linux 虚拟内存和物理内存的理解【转】
查看>>
PHP PSR-1 基本代码规范(中文版)
查看>>
【 Gym - 101138J 】Valentina and the Gift Tree(树链剖分)
查看>>
ubuntu安装chrome浏览器
查看>>
Editplus下载、安装并最佳配色方案(强烈推荐)
查看>>
Druid 配置 wallfilter
查看>>
Linux登录那点事
查看>>
关于 OpenIdConnect 认证启用 HTTPS 回调 RedirectUri 不生效问题
查看>>
springmvc工作原理
查看>>
man nfsd(rpc.nfsd中文手册)
查看>>
NPOI 导出Excel
查看>>
【iCore4 双核心板_ARM】例程十七:USB_MSC实验——读/写U盘(大容量存储器)
查看>>
Java BIO、NIO、AIO
查看>>
【开发】简易教程
查看>>
【Python】向函数传递任意数量的实参
查看>>
linux下activemq安装与配置
查看>>
opencv3 图像处理(一)图像缩放( python与c++ 实现)
查看>>