文章标题 POJ 2104: K-th Number(主席树)
来源:互联网 发布:mac axure 没响应 编辑:程序博客网 时间:2024/04/29 17:32
题目 传送门
思路参考自http://www.cnblogs.com/zyf0163/p/4749042.html
代码:
////http://www.cnblogs.com/zyf0163/p/4749042.html//#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <queue>#include <set>#include <map>#include <algorithm>#include <math.h>#include <vector>using namespace std;typedef long long ll;const int mod=1e9+7;const int maxn=1e5+10;int n,m; int a[maxn],b[maxn];int tot;int sum[maxn*20];int ls[maxn*20],rs[maxn*20],rt[maxn];void build(int &num,int l,int r){ num=++tot; sum[num]=0; if (l==r)return; int mid=(l+r)/2; build(ls[num],l,mid); build(rs[num],mid+1,r);}void update(int &num,int l,int r,int last,int pos){ num=++tot; ls[num]=ls[last]; rs[num]=rs[last]; sum[num]=sum[last]+1; if (l==r)return; int mid=(l+r)/2; if (pos<=mid)update(ls[num],l,mid,ls[last],pos); else update(rs[num],mid+1,r,rs[last],pos);}int query(int st,int ed,int l,int r,int k){ if (l==r)return l; int mid=(l+r)/2; int cnt=sum[ls[ed]]-sum[ls[st]]; if (cnt>=k)return query(ls[st],ls[ed],l,mid,k); else return query(rs[st],rs[ed],mid+1,r,k-cnt);}int main(){ while (scanf ("%d%d",&n,&m)!=EOF){ for(int i=1;i<=n;i++){ scanf ("%d",&a[i]); b[i]=a[i]; } sort(b+1,b+1+n); int sz=unique(b+1,b+1+n)-(b+1); tot=0; build(rt[0],1,sz); for (int i=1;i<=n;i++){ a[i]=lower_bound(b+1,b+1+sz,a[i])-(b); update(rt[i],1,sz,rt[i-1],a[i]); //printf("rt = %d,ls = %d, rs = %d, sum = %d\n", rt[i], ls[i], rs[i], sum[rt[i]]); } int ql,qr,x; while (m--){ scanf ("%d%d%d",&ql,&qr,&x); int tmp=query(rt[ql-1],rt[qr],1,sz,x); printf ("%d\n",b[tmp]); } } return 0;}
阅读全文
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 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(主席树)
- JVM参数设置规则以及参数含义
- [JLOI2014]松鼠的新家
- 《西瓜书》笔记11:特征选择方法(二)
- Bone Collector(01背包问题)
- 浏览器引擎
- 文章标题 POJ 2104: K-th Number(主席树)
- 用RCP开发一个编辑器实现卡尔曼滤波
- 【TensorFlow】TensorFlow第一课:安装与基本概念
- 6:图像模糊处理(水题)
- TensorFlow object detection api------ssd_mobilenet使用
- 【CRM】CRM开发中常用表
- Java动态代理的两种实现方法
- 动态内存/动态数组
- 归并排序 --Java版本