HDU2665 Kth number(区间第K大)
来源:互联网 发布:mac用的播放器 编辑:程序博客网 时间:2024/05/22 14:01
#include<bits/stdc++.h>using namespace std;const int MAXN =(int)1e5+5;struct node{ int vl,l,r;}T[MAXN*40];vector<int>v;int a[MAXN],cnt,root[MAXN];void insert(int l,int r,int &x,int y,int pos){ x=++cnt;T[x]=T[y]; T[x].vl++; if(l==r)return ; int mid=l+r>>1; if(mid>=pos)insert(l,mid,T[x].l,T[y].l,pos); else insert(mid+1,r,T[x].r,T[y].r,pos);}int query(int l,int r,int x,int y,int k){ if(l==r)return l; int sum=T[T[y].l].vl-T[T[x].l].vl; int mid=l+r>>1; if(sum>=k)return query(l,mid,T[x].l,T[y].l,k); else return query(mid+1,r,T[x].r,T[y].r,k-sum);}int main(){ int t; scanf("%d",&t); while(t--){ v.clear(); cnt=0; int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); v.push_back(a[i]); } sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end()); int vsz=v.size(); for(int i=1;i<=n;i++){ a[i]=lower_bound(v.begin(),v.end(),a[i])-v.begin()+1; insert(1,vsz,root[i],root[i-1],a[i]); } while(m--){ int l,r,k; scanf("%d%d%d",&l,&r,&k); printf("%d\n",v[query(1,vsz,root[l-1],root[r],k)-1]); } } return 0;}
阅读全文
0 0
- HDU2665 Kth number(区间第K大)
- [hdu2665 Kth number]区间第k大数
- 主席树模板(区间第k大!)hdu2665
- HDU 2665 Kth number(区间第K大)
- HDU 2665 Kth number(区间第K大) (离散化+主席树)
- HDU2665(函数式线段树-区间第K大)
- hdu2665区间第K大+主席树解题报告
- 杂题 区间第K大(kth)
- 0811 钟 区间第K大(kth)
- 主席树(静态区间第k大)+poj2014+poj2761+hdu2665
- DSOJ Kth Number(第k大的数)
- HDU 2665(Kth number-区间第k大[内存限制+重数])
- hdu 2665 Kth number 区间第K大值 划分树
- HDU-2665 Kth number (主席树 不带修改区间第k大)
- POJ 2104K-th Number&&HDU 2665Kth number划分树 求区间第k大 裸题
- HDU2665--Kth Number(划分树)
- hdu2665 Kth number(主席树模板)
- (主席树)hdu2665 Kth number
- PAT a1029题解
- 三维重建面试13X:一些算法试题-今日头条AI-Lab
- CentOS7基本命令总结
- PAT a1031题解
- redis 三主三从安装配置
- HDU2665 Kth number(区间第K大)
- angular js 单击下拉菜单 不消失实现方式
- 《深入浅出WPF》读书笔记
- for循环的练习
- Python学习——控制流
- PAT a1032题解
- Windows 如何让环境变量设置后 立即生效
- mybatis学习
- 第一题 赋值运算符的重载