主席树板子

写点常用板子,随时可以用。
题目是k-th number
poj2104

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=100010;
const int N=maxn*40;
int n,m,q,tot=0;
int T[maxn],A[maxn],B[maxn];
struct node{
   
	int sum,lson,rson;
}tree[N];
int getid(int x){
   
	return lower_bound(B+1,B+m+1,x)-B;
}
int build(int l,int r){
   
	int p=++tot;
	tree[p].sum=0;
	if(l!=r){
   
		int mid=(l+r)>>1;
		tree[p].lson=build(l,mid);
		tree[p].rson=build(mid+1,r);
	}
	return p;
}
int update(int now,int x,int l,int r){
   
	int p=++tot;
	tree[p].sum=tree[now].sum;
	tree[p].lson=tree[now].lson;
	tree[p].rson=tree[now].rson;
	if(l==r){
   
		tree[p].sum++;
		return p;
	}
	int mid=(l+r)>>1;
	if(x<=mid)	tree[p].lson=update(tree[now].lson,x,l,mid);
	else tree[p].rson=update(tree[now].rson,x,mid+1,r);
	tree[p].sum=tree[tree[p].lson].sum+tree[tree[p].rson].sum;
	return p;	
}
int ask(int p,int q,int l,int r,int k){
   
	if(l==r)	return l;
	int mid=(l+r)>>1;
	int lcnt=tree[tree[p].lson].sum-tree[tree[q].lson].sum;
	if(k<=lcnt)	return ask(tree[p].lson,tree[q].lson,l,mid,k);
	else return	ask(tree[p].rson,tree[q].rson,mid+1,r,k-lcnt);
}
int main(){
   
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;i++){
   
		scanf("%d",&A[i]);
		B[i]=A[i];
	}
	sort(B+1,B+n+1);
	m=unique(B+1,B+n+1)-B-1;

	T[0]=build(1,m);
	for(int i=1;i<=m;i++)
		T[i]=update(T[i-1],getid(A[i]),1,m);
	while(q--){
   
		int x,y,k;
		scanf("%d%d%d",&x,&y,&k);
		printf("%d\n",B[ask(T[y],T[x-1],1,m,k)]);
	}
	return 0;
}
全部评论

相关推荐

现在是2026.2.27,距离我2025.8.16在boss上投出第一份简历以来已经过去了半年多时间了。可能许多牛友对我并不陌生,在去年的89月份,深陷实习焦虑的我不停的在牛客上发帖求助,改过的简历不知道发了多少次。因为双非本的缘故,在实习这条路上可谓是处处碰壁。boss上四位数的沟通只换来两位数的回复,好不容易约到的面试很多还因为各种原因被挂。最终在9月底遇到了我实习过程中的第一个贵人:美团实习的ld。尽管那是个测开岗,但是没有关注我实际的技术栈,而是用专业的提问让我感受到了前所未有的面试体验,发掘了自己的技术闪光点。最终让我决定放弃了另一家中小厂的后端。他们非常尊重我对开发学习的热情,也给足了我自由发挥的空间,如果不是他们让我深度参与的用例生成项目,我或许连接到后面面试的机会都没有。尽管岗位不是开发,但这个过程中对大厂工作流程的深度参与以及对业务,项目,和技术的思维提升对我后续的开发面试一样提供了巨大的帮助。时代的洪流让我们每个人都被迫卷入其中,错过了互联网的红利时期,无论实习还是秋招都令不同背景的同学倍感压力,尽管如此我们依旧要相信:努力定有回报最后祝各位27的兄弟姐妹们,在暑期实习的面试路上一路披荆斩棘,策马扬鞭,用梦中情司的offer回应自己一直以来不愿放弃的拼搏timeline:2.6一面2.11&nbsp;二面2.12&nbsp;三面&nbsp;当天转hr面2.26&nbsp;hr面,面完云证+录用评估2.27&nbsp;offer
EternalRig...:看完太感人了吧,你这是真正的一路生化
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务