poj2104 K-th Number【主席树模板】
来源:互联网 发布:centos 生成uuid 编辑:程序博客网 时间:2024/05/22 20:00
解题思路:
主席树模板题。
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<cmath>#include<ctime>#include<algorithm>#include<iomanip>#include<cctype>#include<queue>using namespace std;const int N=1e5+5,NLogN=N*20;int n,m,Q,a[N],b[N],rt[N];struct node{ int lc,rc,sum;} tr[NLogN];int pool=0;inline void disc_init(){ sort(b+1,b+m+1); m=unique(b+1,b+m+1)-b-1; for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+m+1,a[i])-b;} inline void insert(int y,int &x,int l,int r,int p){ tr[x=++pool]=tr[y]; ++tr[x].sum; if(l==r)return; int mid=l+r>>1; if(p<=mid)insert(tr[y].lc,tr[x].lc,l,mid,p); else insert(tr[y].rc,tr[x].rc,mid+1,r,p);}inline int query(int nl,int nr,int l,int r,int k){ if(l==r)return l; int delta=tr[tr[nr].lc].sum-tr[tr[nl].lc].sum; int mid=l+r>>1; if(delta>=k)return query(tr[nl].lc,tr[nr].lc,l,mid,k); else return query(tr[nl].rc,tr[nr].rc,mid+1,r,k-delta);}inline void tree_init(){ for(int i=1;i<=n;i++) insert(rt[i-1],rt[i],1,m,a[i]);}int main(){ //freopen("lx.in","r",stdin); scanf("%d%d",&n,&Q); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); b[++m]=a[i]; } disc_init(); tree_init(); for(int i=1;i<=Q;i++) { int l,r,k; scanf("%d%d%d",&l,&r,&k); cout<<b[query(rt[l-1],rt[r],1,m,k)]<<'\n'; } return 0;}
阅读全文
0 0
- 主席树模板 [poj2104]K-th Number
- poj2104 K-th Number【主席树模板】
- poj2104 K-th Number(主席树模板)
- POJ2104--K-th Number(主席树)
- poj2104 K-th Number(主席树)
- kyeremal-poj2104-K-th Number-主席树
- POJ2104 K-th Number【主席树】
- POJ2104 K-th Number 主席树
- poj2104 K-th Number 主席树
- 【poj2104】K-th Number 主席树
- POJ2104 K-th Number(主席树)
- poj2104 K-th number 主席树模版
- POJ2104 K-th Number (主席树)
- 【主席树】POJ2104 K-th Number
- [poj2104]K-th Number 主席树
- POJ2104[K-th Number]--主席树
- POJ2104 K-th Number【主席树】
- HDU2665 POJ2104 K-th Number(主席树)
- 用void 0代替undefined
- [LeetCode] 193. Valid Phone Numbers
- Linux之vi三种模式常用操作的学习
- 个人站长十忌
- js中 instanceof 运算符
- poj2104 K-th Number【主席树模板】
- Hibernate 笔记 HQL查询:条件查询,聚集函数,子查询,导航查询
- java获得当前线程的名称
- 偶得一前端面试题,作答如下,欢迎大佬review
- Andriod Studio单元测试问题集总
- Android程序员都该明白--从Activity到View(一)
- 源码安装以太坊/wtc
- QMAKE_LFLAGS妙用
- Python简单实现计算当前单元格的前几行之和