HDU2665-主席树&模板-Kth number
来源:互联网 发布:百度一下官方软件 编辑:程序博客网 时间:2024/06/06 00:07
https://vjudge.net/problem/HDU-2665
区间第k大,主席树模板题。
讲解主席树
http://blog.csdn.net/regina8023/article/details/41910615
#include <iostream>#include <algorithm>#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;const LL INF = 1E9+9;const int maxn = 100006;const int LOG = 20;struct node{ int l,r; int sum;}Node[maxn*LOG];int root[maxn],node_cnt;int numbers[maxn],num_cnt;int a[maxn];void build(int l,int r,int &rt){ rt=++node_cnt; Node[rt].l=Node[rt].r=Node[rt].sum=0; if(l==r) return ; int m=(l+r)>>1; build(l,m,Node[rt].l); build(m+1,r,Node[rt].r);}void update(int v,int l,int r,int &rt,int pre){ rt=++node_cnt; Node[rt]=Node[pre]; ++Node[rt].sum; if(l==r) return ; int m=(l+r)>>1; if(v<=m) update(v,l,m,Node[rt].l,Node[pre].l); else update(v,m+1,r,Node[rt].r,Node[pre].r);}int query(int k,int l,int r,int r1,int r2){ if(l==r) return r; int lnum=Node[Node[r2].l].sum-Node[Node[r1].l].sum; int m=(l+r)>>1; if(k<=lnum) return query(k,l,m,Node[r1].l,Node[r2].l); else return query(k-lnum,m+1,r,Node[r1].r,Node[r2].r);}int main(){// ios::sync_with_stdio(false); int n,m; int ncase; scanf("%d",&ncase); while(ncase--){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); // cin>>a[i]; numbers[i]=a[i]; } sort(numbers+1,numbers+n+1); num_cnt=unique(numbers+1,numbers+n+1)-numbers-1; node_cnt=0; root[0]=0; build(1,num_cnt,root[0]); for(int i=1;i<=n;i++) { int pos = lower_bound(numbers+1,numbers+num_cnt+1,a[i])-numbers; update(pos,1,num_cnt,root[i],root[i-1]); } while(m--) { int L,R,K; cin>>L>>R>>K; int q=query(K,1,num_cnt,root[L-1],root[R]); printf("%d\n",numbers[q]); // cout<<numbers[q]<<'\n'; } } return 0;}
阅读全文
0 0
- HDU2665-主席树&模板-Kth number
- hdu2665 Kth number(主席树模板)
- 主席树 hdu2665 Kth number
- HDU2665 Kth number(主席树入门)
- POJ2104 hdu2665 主席树入门 Kth-number
- (主席树)hdu2665 Kth number
- HDU2665 Kth number(划分树模板题)
- HDU2665 Kth number 【归并树】
- hdu 2665 Kth number(主席树模板)
- hdu2665 主席树模板题
- [POJ2104/HDU2665]Kth Number-主席树-可持久化线段树
- HDU2665--Kth Number(划分树)
- HDU2665 kth number 线段树做法
- hdu2665-Kth number
- HDU2665-Kth number
- HDU2665 Kth number
- HDU2665 POJ2104 K-th Number(主席树)
- HDU 2665 Kth number 主席树模板题
- OpenJudge百炼-2803-碎纸机-C语言-递归
- 暑假第15天总结
- VelocityTracker简介
- 虚幻4 渲染探索【1】引擎渲染组件初探
- 海量数据处理问题汇总及方法总结
- HDU2665-主席树&模板-Kth number
- Android-项目中采用的混淆加固多渠道打包方案
- 设计模式之简单工厂模式
- HDU6129 Just do it[组合数学]
- 判断是否有网络,没网直接跳转去设置网络
- 解决 Genymotion 模拟器V5.0以上版本拖拽安装arm translation 后依旧不能正常运行apk的问题
- Spring中的IOC和AOP原理
- JAVA字符串格式化-String.format()的使用
- 微信小程序中踩过的坑 input textarea swiper