博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HDU 2665&POJ 2104]K-th Number(主席树)
阅读量:6162 次
发布时间:2019-06-21

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

Description

Give you a sequence and ask you the kth big number of a inteval.

Solution

主席树模板题

#include
#include
#include
#include
#include
#define MAXN 100005using namespace std;int T,n,m,sz,tot;int a[MAXN],b[MAXN],rt[MAXN],ls[MAXN*20],rs[MAXN*20],sum[MAXN*20];int read(){ int x=0,f=1;char c=getchar(); while(c<'0'||c>'9'){ if(c=='-')f=-1;c=getchar(); } while(c>='0'&&c<='9'){ x=x*10+c-'0';c=getchar(); } return x*f;}void build(int &idx,int l,int r){ ++tot,idx=tot;sum[idx]=0; if(l==r)return; int mid=(l+r)>>1; build(ls[idx],l,mid); build(rs[idx],mid+1,r);}void insert(int &idx,int l,int r,int last,int pos){ ++tot,idx=tot; ls[idx]=ls[last]; rs[idx]=rs[last]; sum[idx]=sum[last]+1; if(l==r)return; int mid=(l+r)>>1; if(pos<=mid)insert(ls[idx],l,mid,ls[last],pos); else insert(rs[idx],mid+1,r,rs[last],pos);}int query(int s,int t,int l,int r,int k){ if(l==r)return l; int cnt=sum[ls[t]]-sum[ls[s]]; int mid=(l+r)>>1; if(cnt>=k)return query(ls[s],ls[t],l,mid,k); else return query(rs[s],rs[t],mid+1,r,k-cnt);}int main(){ T=read(); while(T--) { n=read(),m=read();tot=0; for(int i=1;i<=n;i++)b[i]=a[i]=read(); sort(a+1,a+1+n); sz=unique(a+1,a+1+n)-(a+1); for(int i=1;i<=n;i++)b[i]=lower_bound(a+1,a+1+sz,b[i])-a; build(rt[0],1,sz); for(int i=1;i<=n;i++) insert(rt[i],1,sz,rt[i-1],b[i]); for(int i=1;i<=m;i++) { int s=read(),t=read(),k=read(); int ans=query(rt[s-1],rt[t],1,sz,k); printf("%d\n",a[ans]); } } return 0;}

 

转载于:https://www.cnblogs.com/Zars19/p/6775196.html

你可能感兴趣的文章
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
Spring常用注解
查看>>
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
js中var、let、const的区别
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
Apache通过mod_php5支持PHP
查看>>
java学习:jdbc连接示例
查看>>