POJ 2104 K-th Number 经典主席树
来源:互联网 发布:常熟淘宝摄影培训 编辑:程序博客网 时间:2024/05/01 09:38
可持久化线段树
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int maxn=100005;struct pi{ int sum; int lson; int rson;}pp[maxn*18];int root[maxn],tot;void build(int cnt,int l,int r){ pp[cnt].sum=0; if(l==r) return ; pp[cnt].lson=tot+1; tot++; build(tot,l,(l+r)/2); pp[cnt].rson=tot+1; tot++; build(tot,(l+r)/2+1,r);}void merg(int qq,int cnt,int n,int p,int k){ int le,ri,mid; le=1; ri=n; while(le<=ri){ mid=(le+ri)/2; pp[cnt]=pp[qq]; pp[cnt].sum+=k; if (le==ri) break; if(p<=mid){ pp[cnt].lson=tot+1; tot++; ri=mid; cnt=tot; qq=pp[qq].lson; } else{ pp[cnt].rson=tot+1; tot++; le=mid+1; cnt=tot; qq=pp[qq].rson; } }}int query(int cnt,int le,int ri,int l,int r){ int s=0; int mid; if(le>=l&&ri<=r){ return pp[cnt].sum; } mid=(le+ri)/2; if(l<=mid) s+=query(pp[cnt].lson,le,mid,l,r); if(r>mid) s+=query(pp[cnt].rson,mid+1,ri,l,r); return s;}int a[maxn],b[maxn];int get(int l,int r,int n,int k){ int le,ri,mid; le=1; ri=n; while(le<=ri){ mid=(le+ri)/2; int q=query(root[r],1,n,1,mid)-query(root[l-1],1,n,1,mid); if(q<k) le=mid+1; else ri=mid-1; } return le;}int main(){ int i,n,m; while(cin>>n>>m){ root[0]=0; tot=0; for(i=1;i<=n;i++){ scanf("%d",&a[i]); b[i]=a[i]; } sort(b+1,b+1+n); for(i=1;i<=n;i++){ a[i]=(int)(lower_bound(b+1,b+1+n,a[i])-b); } for(i=1;i<=n;i++){ root[i]=tot+1; tot++; merg(root[i-1],root[i],n,a[i],1); } for(i=0;i<m;i++){ int a,bb,c; scanf("%d%d%d",&a,&bb,&c); printf("%d\n",b[get(a,bb,n,c)]); } }}
0 0
- POJ 2104 K-th Number 经典主席树
- [POJ 2104]K-th Number 主席树
- poj 2104 K-th Number (主席树)
- poj 2104 K-th Number【主席树】
- POJ 2104 K-th Number [主席树]
- POJ 2104 K-th Number 主席树
- 主席树 poj 2104 K-th Number
- POJ 2104 K-th Number 主席树
- POJ 2104 K-th Number(主席树)
- 【POJ 2104 K-th Number】+ 主席树
- 【POJ】2104 K-th Number 主席树
- POJ-2104:K-th Number(主席树)
- 【主席树】POJ 2014 K-th Number
- poj 2104 K-th Number(划分树 or 主席树)
- POJ 2104 K-th Number (主席树 || 划分树)
- POJ 2104 K-th Number (划分树 / 主席树)
- poj 2104 K-th Number(划分树裸题&主席树)
- POJ 2104 K-th Number 静态主席树(裸
- centos开放端口
- @Pointcut的用法
- 伪类样式:hover的优先级
- 时间复杂度和空间复杂度
- office 2013 + Project + Visio + Office2010 + Win8.1 + Win8.0 + Win7
- POJ 2104 K-th Number 经典主席树
- hdu1575 Tr A
- hadoop2.2.0定制mapreduce输出到Redis
- Linux学习笔记-Linux系统简介
- 学习Vc++笔记,从mfc做起
- cloudera cdh sqoop2 加入myqsl 驱动包
- AppCan技术风暴来袭,12城13场免费培训火速报名中
- 央视“大裤衩”首次清洗:花50万
- leetcode || 78、Subsets