P3834

主席树模板,求区间第k小。

 1 #include <bits/stdc++.h>
2 using namespace std;
3 #define lc tr[i].ch[0]
4 #define rc tr[i].ch[1]
5 #define Lc tr[j].ch[0]
6 #define Rc tr[j].ch[1]
7 #define mid ((l + r) >> 1)
8 const int N = 2e5 + 10;
9 int n, m, a[N], b[N];
10 int cnt, rt[N];
11 struct node {
12 int num, ch[2];
13 }tr[N * 20];
14 void update(int &i, int j, int l, int r, int k) {
15 i = ++cnt;//编号
16 tr[i] = tr[j];//复制之前版本
17 ++ tr[i].num;
18 if (l == r) return ;
19 if (k <= mid) update(lc, Lc, l, mid, k);
20 else update(rc, Rc, mid + 1, r, k);
21 }
22 int query(int i, int j, int l, int r, int k) {
23 if (l == r) return l;//返回下标
24 int s = tr[Lc].num - tr[lc].num;
25 if (k <= s) return query(lc, Lc, l, mid, k);
26 else return query(rc, Rc, mid + 1, r, k - s);
27 }
28 int main() {
29 scanf("%d %d", &n, &m);
30 for (int i = 1; i <= n; i ++) {
31 scanf("%d", &a[i]);
32 b[i] = a[i];
33 }
34 sort(b + 1, b + n + 1);
35 int tot = unique(b + 1, b + n + 1) - b - 1;
36 cnt = 0, rt[0] = 0;
37 for (int i = 1; i <= n; i ++)
38 update(rt[i], rt[i - 1], 1, tot, lower_bound(b + 1, b + tot + 1, a[i]) - b);
39 int x, y, k;
40 while (m --) {
41 scanf("%d %d %d", &x, &y, &k);
42 printf("%d\n", b[query(rt[x - 1], rt[y], 1, tot, k)]);
43 }
44 return 0;
45 }

最新文章

  1. Ubuntu raid5+lvm实验
  2. [Leetcode] Interleaving String
  3. libevent功能使用简介
  4. 待整理 - Linux 下的VI命令大全
  5. 【项目经验】如何用TexturePacker &amp; Physicseditor开发游戏
  6. (摘)Chart属性设置
  7. 1.Basic Structure
  8. python网络编程 — HTTP客户端
  9. quailty&#39;s Contest #1 A1 道路修建 Small
  10. Alsa 读取wave文件,并播放wave 文件
  11. java之Hibernate框架实现数据库操作
  12. ASP.NET Core &amp; Docker 实战经验分享
  13. Python入门测试
  14. cf1153E 二分思维交互
  15. ASP.NET Core Docker jexus nginx部署-CentOS实践版
  16. java JDK环境的配置
  17. 减小delphi体积的方法
  18. 内置函数之sorted,filter,map
  19. Java理论学时第一节。课后作业。
  20. jquery.validate,错误信息位置

热门文章

  1. 基于yum安装CDH集群
  2. 清北学堂 2020 国庆J2考前综合强化 Day5
  3. kubernetes之资源限制及QOS服务质量
  4. B+树索引页大小是如何确定的?
  5. 3. 安装部署MGR集群 | 深入浅出MGR
  6. C++11实现可变参数泛型抽象工厂
  7. ApacheCon 首次亚洲大会 —— Incubator 专场介绍
  8. Luogu2922 [USACO08DEC]秘密消息Secret Message (Trie树)
  9. Luogu2986 [USACO10MAR]伟大的奶牛聚集 (树形DP)
  10. Luogu3090 [USACO13NOV]空荡荡的摊位Empty Stalls (动态规划)