POJ--2104 K-th Number (主席树模版题)
题目链接
求区间第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 (主席树模版题)相关推荐
- poj2104 k-th number 主席树入门讲解
poj2104 k-th number 主席树入门讲解 定义:主席树是一种可持久化的线段树 又叫函数式线段树 刚开始学是不是觉得很蒙逼啊 其实我也是 主席树说简单了 就是 保留你每一步操作完成之后 ...
- POJ 2104 K-th Number 主席树(区间第k大)
题目链接: http://poj.org/problem?id=2104 K-th Number Time Limit: 20000MSMemory Limit: 65536K 问题描述 You ar ...
- POJ - 2104 K-th Number(主席树)
题目链接:点击查看 题目大意:给出一个数列,然后是m次查询,每次查询闭区间[l,r]内第K大的数 题目分析:裸的主席树,暑假集训第三周的时候就听说过了这个数据结构,不过当时太懒了,而且那些主席树的问题 ...
- 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 ...
- BZOJ 3524主席树裸题 (雾)
思路: 按权值建一棵主席树 (但是这好像不是正解 空间复杂度是不对的--.) //By SiriusRen #include <cstdio> #include <cstring&g ...
- 【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 ...
- A - 敌兵布阵(线段树模版题)
传送门 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情 ...
- 主席树的各类模板(区间第k大数【动,静】,区间不同数的个数,区间=k的个数)...
取板粗 好东西来的 1.(HDOJ2665)http://acm.hdu.edu.cn/showproblem.php?pid=2665 (POJ2104)http://poj.org/probl ...
- 主席树学习小结(POJ 2104)
在高中的时候就听到过主席树了,感觉非常高端,在寒假的时候 winter homework中有一题是查找区间第K大的树,当时就开始百度这种网上的博客,发现主席树看不懂,因为那个root[i],还有tx[ ...
最新文章
- 量化交易python入门书籍_量化交易新手最适用的5本书
- python列出文件夹最新的几个文件_Python列出一个文件夹及其子目录的所有文件
- 汇编 加法减法指令 inc dec add sub neg 标志寄存器测试
- java web 登录界面案例_【JavaWeb】74:写一个登录案例
- Mac 顶部栏显示路径
- WebApp列表:15个个性化礼物定制服务
- 电商支付-使用Restful api接口集成Paypal支付方式(一)
- 163的邮箱如何注册,邮箱申请163的好处
- 工商阿里忙互殴 苏宁高调打假争做主角?
- 2.5css ps切图、
- SQL-count()理解
- 登录前的人机验证VAPTCHA
- 车载以太网 > 百兆100BaseT1转TX盒子拆解(包含3类产品)
- clear:both在HTML页面中的用法
- 对连续值/离散值进行预处理的两种方式(标准化/one-hot化)、反标准化/逆标准化、字符串预处理
- linux命令发请求,Linux命令发送Http的get或post请求(curl和wget两种方法)
- OpenGL播放yuv数据流(着色器SHADER)-windows(一)
- 恢复服务器删除文件,恢复服务器删除文件夹
- 现代软件工程讲义 1 软件工程概论
- layui删除确认,提示创