博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2104 K-th Number(可持久化线段树)/hdu 2665
阅读量:4476 次
发布时间:2019-06-08

本文共 1783 字,大约阅读时间需要 5 分钟。

build: 这份代码有以下问题,在离散化得时候并没有按照离散化之后的vector大小进行查找(好像以修正)

-------------------------------------------------

题意:想学主席树,你就肯定知道这道题,去买个面包就有10个人会做的区间第k大(你懂得)

思路:主席树,听说好像其他的也可以做

下面大概说一下主席树,主席树可以进行离线的区间第k大,好像在线的是用树状数组套主席树(不对请大牛们留言指出),对于主席树的建树,很少有博客描述主席树的建树(可能我看的太少了),大家都是说一些,前缀和操作,很少说这个线段树到底维护的是什么东西,后来看了一篇博客的图(传送门 http://www.cnblogs.com/Empress/p/4652449.html),我才发现,是类似于权值线段树的,现在窝只是对于主席树有一点了解,其他的内容等待二更。

然后附上我抄袭的主席树代码:(话说里面的去重操作真的帅,村里人没见过)

之前代码有误,二更---

三更---修改为从0开始的主席树

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define zero(a) fabs(a)
(y)) ? (x) : (y) )#define min( x, y ) ( ((x) < (y)) ? (x) : (y) )#define lowbit(x) (x&(-x))#define debug(a) cerr<<#a<<"=="<
<
v;int getid(int x){ return lower_bound(v.begin(),v.end(),x)-v.begin();}void update(int l,int r,int &x,int y,int pos){ T[++cnt]=T[y],T[cnt].sum++,x=cnt; if(l==r)return ; int mid=(l+r)>>1; if(pos<=mid)update(l,mid,T[x].l,T[y].l,pos); else update(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 mid=(l+r)>>1; int now=T[T[y].l].sum-T[T[x].l].sum; if(k<=now)query(l,mid,T[x].l,T[y].l,k); else query(mid+1,r,T[x].r,T[y].r,k-now);}int main(){ memset(root,0,sizeof(root)); cnt=0; v.clear(); 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()); for(int i=1;i<=n;i++){ update(0,v.size()-1,root[i],root[i-1],getid(a[i])); } while(m--){ scanf("%d%d%d",&x,&y,&k);// printf("test %d\n",query(0,v.size()-1,root[x-1],root[y],k)); printf("%d\n",v[query(0,v.size()-1,root[x-1],root[y],k)]); } return 0;}

 

转载于:https://www.cnblogs.com/lalalatianlalu/p/8625256.html

你可能感兴趣的文章
批量梯度下降法(Batch Gradient Descent)
查看>>
说说无线路由器后门的那些事儿(1)-D-Link篇
查看>>
AJAX POST&跨域 解决方案 - CORS
查看>>
C#基础之接口
查看>>
三相交流电路中三相负载的计算方法
查看>>
Webform(Linq高级查、分页、组合查询)
查看>>
nio 序列化
查看>>
android:强大的图像下载和缓存库Picasso
查看>>
Tick and Tick------HDOJ杭州电(无法解释,直接看代码)
查看>>
開始Unity3D的学习之旅
查看>>
WEB安全实战(一)SQL盲注
查看>>
华为HG8347R V3R016C10S135光猫桥接 北京联通 恢复华为原版
查看>>
Java文件下载:如何编码文件名称以及如何设置HttpServletResponse
查看>>
python 之@staticmethod和@classmethod
查看>>
QQ通信机制(转)
查看>>
泛型高级通配符
查看>>
[复习]Python回顾 OS模块,函数传参,模块导入
查看>>
什么是反射?以及应用场景?
查看>>
Hadoop集群时钟同步
查看>>
IT从业者真的成了民工,悲哀呀
查看>>