题目链接: https://www.luogu.org/problem/P3834

首先要离散化,然后主席树模板。

 1 #include<cstdio>
2 #include<cstring>
3 #include<algorithm>
4 #define mid (l+r)/2
5 using namespace std;
6
7 const int N = 200010;
8 int n, q, m, cnt = 0;
9 int a[N], b[N], T[N];
10 int sum[N<<5], L[N<<5], R[N<<5];
11
12 inline int build(int l, int r)
13 {
14 int rt = ++ cnt;
15 sum[rt] = 0;
16 if (l < r){
17 L[rt] = build(l, mid);
18 R[rt] = build(mid+1, r);
19 }
20 return rt;
21 }
22
23 inline int update(int pre, int l, int r, int x)
24 {
25 int rt = ++ cnt;
26 L[rt] = L[pre]; R[rt] = R[pre]; sum[rt] = sum[pre]+1;
27 if (l < r){
28 if (x <= mid) L[rt] = update(L[pre], l, mid, x);
29 else R[rt] = update(R[pre], mid+1, r, x);
30 }
31 return rt;
32 }
33
34 inline int query(int u, int v, int l, int r, int k)
35 {
36 if (l >= r) return l;
37 int x = sum[L[v]] - sum[L[u]];
38 if (x >= k) return query(L[u], L[v], l, mid, k);
39 else return query(R[u], R[v], mid+1, r, k-x);
40 }
41
42 int main()
43 {
44 scanf("%d%d", &n, &q);
45 for (int i = 1; i <= n; i ++){
46 scanf("%d", &a[i]);
47 b[i] = a[i];
48 }
49 sort(b+1, b+1+n);
50 m = unique(b+1, b+1+n)-b-1;
51 T[0] = build(1, m);
52 for (int i = 1; i <= n; i ++){
53 int t = lower_bound(b+1, b+1+m, a[i])-b;
54 T[i] = update(T[i-1], 1, m, t);
55 }
56 while (q --){
57 int x, y, z;
58 scanf("%d%d%d", &x, &y, &z);
59 int t = query(T[x-1], T[y], 1, m, z);
60 printf("%d\n", b[t]);
61 }
62 return 0;
63 }

主席树(区间第k小的数)的更多相关文章

  1. 牛客多校第九场H Cutting Bamboos(主席树 区间比k小的个数)题解

    题意: 标记为\(1-n\)的竹子,\(q\)个询问,每次给出\(l,r,x,y\).要求为砍区间\(l,r\)的柱子,要求砍\(y\)次把所有竹子砍完,每次砍的时候选一个高度,把比他高的都砍下来,并 ...

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

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

  3. 主席树区间第K大

    主席树的实质其实还是一颗线段树, 然后每一次修改都通过上一次的线段树,来添加新边,使得每次改变就改变logn个节点,很多节点重复利用,达到节省空间的目的. 1.不带修改的区间第K大. HDU-2665 ...

  4. codeforces 1262D Optimal Subsequences 主席树询问第k小

    题意 给定长度为\(n\)的序列\(a\),以及m个询问\(<k,pos>\),每次询问满足下列条件的子序列中第\(pos\)位的值为多少. 子序列长度为\(k\) 序列和是所有长度为\( ...

  5. HDU 6278 主席树(区间第k大)+二分

    Just h-index Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)To ...

  6. 【XSY2720】区间第k小 整体二分 可持久化线段树

    题目描述 给你你个序列,每次求区间第\(k\)小的数. 本题中,如果一个数在询问区间中出现了超过\(w\)次,那么就把这个数视为\(n\). 强制在线. \(n\leq 100000,a_i<n ...

  7. HDU 5919 Sequence II(主席树+区间不同数个数+区间第k小)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=5919 题意:给出一串序列,每次给出区间,求出该区间内不同数的个数k和第一个数出现的位置(将这些位置组 ...

  8. 【BZOJ】1901: Zju2112 Dynamic Rankings(区间第k小+树状数组套主席树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1901 首先还是吐槽时间,我在zoj交无限tle啊!!!!!!!!我一直以为是程序错了啊啊啊啊啊啊. ...

  9. 主席树总结(经典区间第k小问题)(主席树,线段树)

    接着上一篇总结--可持久化线段树来整理吧.点击进入 这两种数据结构确实有异曲同工之妙.结构是很相似的,但维护的主要内容并不相同,主席树的离散化.前缀和等思想也要更难理解一些. 闲话 话说刚学习主席树的 ...

随机推荐

  1. 安全相关,xss

    XSS XSS,即 Cross Site Script,中译是跨站脚本攻击:其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS. ...

  2. pyqt5 的串口编写进度

    2020.12.18 今天遇到一个问题, 想用回车实现串口数据的发送. 下面这句话是让光标移动到文字的尾部,但是不能够实现. 对QTextEdit控件中的文字改写,或清除后,再调用下面的移动到尾部,就 ...

  3. 【swift】用Xib实现自定义警告框(Alert)(安卓叫法:Dialog对话框)

    在写这篇博客前,先感谢两篇博客 [如何自定义的思路]:https://www.cnblogs.com/apprendre-10-28/p/10507794.html [如何绑定Xib并且使用]:htt ...

  4. iOS 的文件操作

    直接上操作 效果:将一张图片写入文件 (图片本身已经在Assets.xcassets里面了) 1.获取当前app的沙盒路径 NSString *documentPath = NSSearchPathF ...

  5. ORACLE dba_extents

    dba_extents OWNER 拥有者 SEGMENT_NAME 段名 PARTITION_NAME 分区名 SEGMENT_TYPE 段类型 TABLESPACE_NAME 表空间名 EXTEN ...

  6. Function overloading and const keyword

    Predict the output of following C++ program. 1 #include<iostream> 2 using namespace std; 3 4 c ...

  7. Spring(1):Spring介绍

    一,Spring简介: Spring是一个开源框架,它由Rod Johnson创建:它是为了解决企业应用开发的复杂性而创建的 Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架 ...

  8. 【HarmonyOS】【xml】初学XML布局作业

    首先要明确,有两种布局方式 线性布局:DirectionalLayout 依赖布局:DependentLayout 好,接下来看一看下面的例子 页面案例1 代码如下: <?xml version ...

  9. 华为云函数中使用云数据库的JavaScript SDK基础入门

    背景介绍 使用云数据库Server端的SDK,此处我以华为提供的官方Demo为例,他们的Demo也已经开源放在了GitHub上,大家需要的可以自行下载. https://github.com/AppG ...

  10. Airtest结合tidevice实现IOS自动化测试

    这篇博文内容,是基于之前的配置而来的.我们可以先回顾一下之前博文,Windows搭建mac黑苹果系统:WebDriverAgent重签名爬坑记 . 今天来分享下如何通过 tidevice实现IOS自动 ...