[POJ2104] K-th Number(区间K小数,主席树模板)
2016-07-14 10:47
489 查看
Description
给N个数,M个询问区间k小值Solution
显然可以用主席树维护,不解释。注意要离散化
啊?主席树是什么?看这里
Code
#include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> #include<iostream> #define fo(i,a,b) for(i=a;i<=b;i++) #define fod(i,a,b) for(i=a;i>=b;i--) #define MAXN 100005 using namespace std; struct node { int ls,rs,sm; }tr[20*MAXN]; struct number { int x,y; }b[MAXN]; bool cmp(number x,number y) { return x.x<y.x; } int rt[MAXN],a[MAXN],n,m,num,nd,pt[MAXN]; void build(int lst,int now,int l,int r,int v) { if (l==r) { tr[now].sm=tr[lst].sm+1; return; } int mid=(l+r)/2; if (v<=mid) { tr[now].rs=tr[lst].rs; tr[now].ls=++nd; build(tr[lst].ls,nd,l,mid,v); } else { tr[now].ls=tr[lst].ls; tr[now].rs=++nd; build(tr[lst].rs,nd,mid+1,r,v); } tr[now].sm=tr[tr[now].ls].sm+tr[tr[now].rs].sm; } int find(int lst,int now,int l,int r,int v) { if (l==r) return l; int mid=(l+r)/2; int ls1=tr[lst].ls,ls2=tr[now].ls,sum=tr[ls2].sm-tr[ls1].sm; if (sum<v) return find(tr[lst].rs,tr[now].rs,mid+1,r,v-sum); else return find(tr[lst].ls,tr[now].ls,l,mid,v); } int main() { cin>>n>>m; int i,j; num=0,nd=0; fo(i,1,n) { scanf("%d",&a[i]); b[i].x=a[i]; b[i].y=i; } sort(b+1,b+n+1,cmp); fo(i,1,n) { if (b[i].x!=b[i-1].x) num++; pt[num]=b[i].x; a[b[i].y]=num; } fo(i,1,n) { rt[i]=++nd; build(rt[i-1],rt[i],1,n,a[i]); } fo(i,1,m) { int x,y,k; scanf("%d%d%d",&x,&y,&k); printf("%d\n",pt[find(rt[x-1],rt[y],1,n,k)]); } }
相关文章推荐
- 我对Java Serializable(序列化)的理解和总结
- tomcat启动出现:Caused by: java.net.UnknownHostException: zspr: 未知的名称或服务
- 静态、自适应、流式、响应式布局
- 搭建Tomcat8+ solr-5.5.1+zookeeper3.4.6集群及单机版
- mybatis绑定错误
- ABB机器人添加串口模块后无法使用的解决办法
- iOS 语音wav转amr amr转war三方库
- Android EditText得到和失去焦点时,自定义处理内容
- 理解HTTP session原理及应用
- 廖雪峰python学习笔记12.StringIO和BytesIO
- Spring 中的 LocalSessionFactoryBean和LocalContainerEntityManagerFactoryBean???
- 【poj2778-DNA Sequence】AC自动机+矩阵乘法
- 如何查看 Linux是32位还是64位?
- Java中<< ,>>
- sendRedirect与forward
- 获取第三方网站信息解析
- 几何学
- 2016年中盘点,七大企业级技术决胜未来
- ScyllaDB:用 C++ 重写后的 Cassandra ,性能提高了十倍
- yii2.0 ArrayHelper