题目链接

求区间第k大

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<stdio.h>
using namespace std;
#define maxn 100009
#define LL long long
#define mem(a,b) memset(a,b,sizeof(a))
struct ac{int va,l,r;
}tre[maxn*25];
int a[maxn],root[maxn],tot=0;
vector<int>q;
int getid(int x){return (lower_bound(q.begin(),q.end(),x)-q.begin()+1);
}
void updata(int l,int r,int &x,int y,int z){tre[++tot]=tre[y];tre[tot].va++;x=tot;if(l==r) return ;int mid=(l+r)/2;if(z>mid){updata(mid+1,r,tre[x].r,tre[y].r,z);}else updata(l,mid,tre[x].l,tre[y].l,z);
}
int query(int l,int r,int x,int y,int z){if(l==r) return l;int s=tre[tre[x].l].va-tre[tre[y].l].va;int mid=(l+r)/2;if(s>=z){return query(l,mid,tre[x].l,tre[y].l,z);}return query(mid+1,r,tre[x].r,tre[y].r,z-s);
}
int main(){int n,m;cin>>n>>m;mem(a,0); mem(tre,0);for(int j=1;j<=n;j++){scanf("%d",&a[j]);q.push_back(a[j]);}sort(q.begin(),q.end());q.erase(unique(q.begin(),q.end()),q.end());int len=q.size();for(int j=1;j<=n;j++){int x=getid(a[j]);updata(1,len,root[j],root[j-1],x);}for(int j=0;j<m;j++){int l,r,x;scanf("%d%d%d",&l,&r,&x);cout<<q[query(1,len,root[r],root[l-1],x)-1]<<endl;}
}

转载于:https://www.cnblogs.com/DyLoder/p/9773364.html

POJ--2104 K-th Number (主席树模版题)相关推荐

  1. poj2104 k-th number 主席树入门讲解

    poj2104 k-th number 主席树入门讲解 定义:主席树是一种可持久化的线段树 又叫函数式线段树   刚开始学是不是觉得很蒙逼啊 其实我也是 主席树说简单了 就是 保留你每一步操作完成之后 ...

  2. POJ 2104 K-th Number 主席树(区间第k大)

    题目链接: http://poj.org/problem?id=2104 K-th Number Time Limit: 20000MSMemory Limit: 65536K 问题描述 You ar ...

  3. POJ - 2104 K-th Number(主席树)

    题目链接:点击查看 题目大意:给出一个数列,然后是m次查询,每次查询闭区间[l,r]内第K大的数 题目分析:裸的主席树,暑假集训第三周的时候就听说过了这个数据结构,不过当时太懒了,而且那些主席树的问题 ...

  4. K-th Closest Distance HDU - 6621(第k小绝对值+主席树+二分)

    You have an array: a1, a2, , an and you must answer for some queries. For each query, you are given ...

  5. BZOJ 3524主席树裸题 (雾)

    思路: 按权值建一棵主席树 (但是这好像不是正解 空间复杂度是不对的--.) //By SiriusRen #include <cstdio> #include <cstring&g ...

  6. 【HDU - 2665】Kth number(区间第K大,主席树,模板)

    题干: Give you a sequence and ask you the kth big number of a inteval. Input The first line is the num ...

  7. A - 敌兵布阵(线段树模版题)

    传送门 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情 ...

  8. 主席树的各类模板(区间第k大数【动,静】,区间不同数的个数,区间=k的个数)...

    取板粗   好东西来的 1.(HDOJ2665)http://acm.hdu.edu.cn/showproblem.php?pid=2665 (POJ2104)http://poj.org/probl ...

  9. 主席树学习小结(POJ 2104)

    在高中的时候就听到过主席树了,感觉非常高端,在寒假的时候 winter homework中有一题是查找区间第K大的树,当时就开始百度这种网上的博客,发现主席树看不懂,因为那个root[i],还有tx[ ...

最新文章

  1. 量化交易python入门书籍_量化交易新手最适用的5本书
  2. python列出文件夹最新的几个文件_Python列出一个文件夹及其子目录的所有文件
  3. 汇编 加法减法指令 inc dec add sub neg 标志寄存器测试
  4. java web 登录界面案例_【JavaWeb】74:写一个登录案例
  5. Mac 顶部栏显示路径
  6. WebApp列表:15个个性化礼物定制服务
  7. 电商支付-使用Restful api接口集成Paypal支付方式(一)
  8. 163的邮箱如何注册,邮箱申请163的好处
  9. 工商阿里忙互殴 苏宁高调打假争做主角?
  10. 2.5css ps切图、
  11. SQL-count()理解
  12. 登录前的人机验证VAPTCHA
  13. 车载以太网 > 百兆100BaseT1转TX盒子拆解(包含3类产品)
  14. clear:both在HTML页面中的用法
  15. 对连续值/离散值进行预处理的两种方式(标准化/one-hot化)、反标准化/逆标准化、字符串预处理
  16. linux命令发请求,Linux命令发送Http的get或post请求(curl和wget两种方法)
  17. OpenGL播放yuv数据流(着色器SHADER)-windows(一)
  18. 恢复服务器删除文件,恢复服务器删除文件夹
  19. 现代软件工程讲义 1 软件工程概论
  20. layui删除确认,提示创

热门文章

  1. Go gin环境搭建
  2. 【收藏】docker的privileged 与 k8s的privileged 设置方式
  3. Windows 路由追踪tracert命令使用示例
  4. Pyhon爬虫开发:URLError的使用
  5. redis 配置允许其他主机可以远程连接redis
  6. JVM 调优实战--jmap的使用以及内存溢出分析
  7. 【软考-软件设计师】编译程序基本原理
  8. spring data jpa实现有条件的分页查询功能
  9. 关闭切换大小写时桌面提示
  10. python正则表达式花括号_python正则表达式(+ {})(二)