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

本文共 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

你可能感兴趣的文章
layoutSubviews总结
查看>>
目标检测的图像特征提取(一)HOG特点
查看>>
百度地图 Android SDK - 新的版本号(v3.2.0)正式上线
查看>>
TF-IDF模型的概率解释
查看>>
Android之桌面组件AppWidget
查看>>
使用ab进行页面的压力测试
查看>>
桌面轻量级数据库的选择:Access、SQLite、自己编写?
查看>>
Linux运维不可不知的性能监控和调试工具
查看>>
2015UESTC 暑假集训总结
查看>>
jQuery Post
查看>>
WebApiThrottle限流框架使用手册
查看>>
SQL Server里的自旋锁介绍
查看>>
成为高级程序员的 10 个步骤
查看>>
关于map与set的一点理解;
查看>>
可重复读隔离级别里的可能死锁
查看>>
[LeetCode]N-Queens 八皇后问题扩展(经典深层搜索)
查看>>
iOS开发-Launch Image和Launch Screen
查看>>
【Xamarin开发 Android 系列 3】循序渐进的学习顺序
查看>>
CSAPP 六个重要的实验 lab5
查看>>
迭代中删除元素
查看>>