博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【模板】可持久化线段树 1(主席树)
阅读量:5282 次
发布时间:2019-06-14

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

题目描述

如题,给定N个正整数构成的序列,将对于指定的闭区间查询其区间内的第K小值。

输入输出格式

输入格式:

 

第一行包含两个正整数N、M,分别表示序列的长度和查询的个数。

第二行包含N个正整数,表示这个序列各项的数字。

接下来M行每行包含三个整数l, r, kl,r,k , 表示查询区间[l, r][l,r] 内的第k小值。

 

输出格式:

 

输出包含k行,每行1个正整数,依次表示每一次查询的结果

#include
using namespace std;const int maxn = 100005*2;int a[maxn], d, p[maxn];struct Node{ int cnt; Node *ls, *rs; void up(){ cnt = ls->cnt + rs->cnt; }}pool[maxn*32], *tail=pool, *root[maxn], *zero;void build(){ zero = ++tail; zero->ls = zero->rs = zero; zero->cnt = 0; root[0] = zero;}Node * newnode(){ Node * nd = ++tail; nd->ls = nd->rs = zero; nd->cnt = 0; return nd;}Node * modify(Node * nd, int pos, int del, int l = 1, int r = d){ Node * nnd = newnode(); if(l == r)nnd->cnt = nd->cnt + del; else{ int m = (l + r) >> 1; if(pos <= m){ nnd->rs = nd->rs; nnd->ls = modify(nd->ls, pos, del, l, m); } else{ nnd->ls = nd->ls; nnd->rs = modify(nd->rs, pos, del, m+1, r); } nnd->up(); } return nnd; }int query(Node *lnd, Node *rnd, int k, int l = 1, int r = d){ if(l == r)return a[l]; int m = (l + r) >> 1; int lz = rnd->ls->cnt - lnd->ls->cnt; if(lz>= k)return query(lnd->ls, rnd->ls, k, l, m); else return query(lnd->rs, rnd->rs, k-lz, m+1, r);}int main(){ int n,q; scanf("%d%d",&n,&q); for(int i = 1; i <= n; i++)scanf("%d",&a[i]),p[i]=a[i]; sort(a+1, a+1+n); d = unique(a+1, a+1+n) - a - 1; build(); for(int i = 1; i <= n; i++){ int tt = lower_bound(a+1, a+1+d, p[i]) - a; root[i] = modify(root[i-1], tt, 1); } while(q--){ int l, r, k; scanf("%d%d%d",&l,&r,&k); printf("%d\n",query(root[l-1], root[r], k)); } }

 

转载于:https://www.cnblogs.com/EdSheeran/p/8688521.html

你可能感兴趣的文章
【刷题】SPOJ 705 SUBST1 - New Distinct Substrings
查看>>
IEEE 754浮点数表示标准
查看>>
declare 结构用来设定一段代码的执行指令
查看>>
图解算法读书笔记
查看>>
调试学习笔记
查看>>
解开lambda最强作用的神秘面纱
查看>>
Java基础:Object类中的equals与hashCode方法
查看>>
C#拦截Http请求
查看>>
[bzoj2152]聪聪可可
查看>>
图片下载器
查看>>
找不到docker.socket解决方法
查看>>
Activity生命周期
查看>>
HTML中head头结构
查看>>
IntelliJ IDEA 最新破解方法
查看>>
sql server和mysql中分别实现分页功能
查看>>
jQuery CircleCounter的环形倒计时效果
查看>>
kafka server管理
查看>>
系统设计与分析(六)
查看>>
Java IO-1 File类
查看>>
HW5.29
查看>>