传送门

模板题一道,1A。

——代码

 1 #include <cstdio>
 2 #include <algorithm>
 3 #define ls son[now][0], l, mid
 4 #define rs son[now][1], mid + 1, r
 5
 6 using namespace std;
 7
 8 const int N = 100005;
 9
10 int n, sz, tot;
11 int a[N], b[N], sum[20 * N], rt[20 * N], son[20 * N][2];
12
13 inline void build(int &now, int l, int r)
14 {
15     now = ++tot;
16     if(l == r) return;
17     int mid = (l + r) >> 1;
18     build(ls);
19     build(rs);
20 }
21
22 inline void update(int &now, int l, int r, int last, int x)
23 {
24     now = ++tot;
25     sum[now] = sum[last] + 1;
26     son[now][0] = son[last][0];
27     son[now][1] = son[last][1];
28     if(l == r) return;
29     int mid = (l + r) >> 1;
30     if(x <= mid) update(ls, son[now][0], x);
31     else update(rs, son[now][1], x);
32 }
33
34 inline int query(int now, int l, int r, int x)
35 {
36     if(l == r) return l;
37     int mid = (l + r) >> 1, cnt = sum[son[now][0]];
38     if(x <= cnt) return query(ls, x);
39     else return query(rs, x - cnt);
40 }
41
42 int main()
43 {
44     int i, k;
45     scanf("%d", &n);
46     for(i = 1; i <= n; i++) scanf("%d", &a[i]), b[i] = a[i];
47     sort(b + 1, b + n + 1);
48     sz = unique(b + 1, b + n + 1) - (b + 1);
49     build(rt[0], 1, sz);
50     for(i = 1; i <= n; i++)
51     {
52         k = lower_bound(b + 1, b + sz + 1, a[i]) - b;
53         update(rt[i], 1, sz, rt[i - 1], k);
54         if(i % 2 == 1) printf("%d\n", b[query(rt[i], 1, sz, (i + 1) >> 1)]);
55     }
56     return 0;
57 }

View Code

转载于:https://www.cnblogs.com/zhenghaotian/p/6758940.html

[luoguP1168]中位数(主席树+离散化)相关推荐

  1. SPOJ - COT Count on a tree(LCA+主席树+离散化)

    题目链接:点击查看 题目大意:给出一棵树,每个点都有一个权值,现在给出m个询问,每次询问的格式是u,v,k,要求输出u-v这条路径上第k大的数 题目分析:一看到第k大的数就会想到主席树,既然是在树上的 ...

  2. 玲珑杯 1157 - 造物主的戒律 主席树+离散化

    题目链接:http://www.ifrog.cc/acm/problem/1157 1157 - 造物主的戒律 Time Limit:20s Memory Limit:512MByte Submiss ...

  3. HDU - 6601 Keen On Everything But Triangle(主席树)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a ,再给出 q 次询问,每次询问给出一个区间 [ l , r ] ,要求从区间内选出三个数,使得构成的三角形周长最大,如果无解输出 - 1 ...

  4. HDU - 4866 Shooting(主席树+扫描线)

    题目链接:点击查看 题目大意:给出 n 条平行于 x 轴的线段,每条线段都的 [ l , r ] 都位于 [ 1 , X ] 之间,每条线段的高度为 d,也就是距离 x 轴的位置,接下来给出 m 次询 ...

  5. 模板三连击:树状数组+线段树+主席树

    没事儿干,复习模板...... 1.树状数组 本来不想写这个的,但是反正就几分钟就打完了,所以就写了,水AC数. 洛谷 P3374 [模板]树状数组 1 1 #include<cstdio> ...

  6. YBTOJ洛谷P2839:最大中位数(主席树、二分答案)

    遇事不决,二分试试 解析 很好的一道题 真是把主席树玩明白了 一个关于中位数的常用trick: 二分答案mid,把>=mid的看成1,<mid的看成-1,然后看最大子段和是否>=0 ...

  7. HDU - 3804 Query on a tree(主席树维护最大值+离散化)

    题目链接:点击查看 题目大意:给出一棵树,每条边上都有一个权值,给出m个查询:a,b:问从点1到点a的唯一路径上,在边权小于等于b的边中选出边权最大的值输出,若没有符合条件的边则输出-1: 题目分析: ...

  8. BZOJ #2874. 训练士兵(差分+离散化+主席树)

    BZOJ #2874. 训练士兵 description solution code description Ryz正在着手于训练一批精锐士兵 Ryz手下有n*m个士兵,排成一个n行m列的方阵.在一天 ...

  9. [国家集训队]middle(二分+主席树[中位数思维题])

    文章目录 点击查看 solution code 点击查看 solution 简单口胡一下就跑 考虑二分答案ansansans 区间[x1,x2],x1∈[a,b],x2∈[c,d][x1,x2],x1 ...

最新文章

  1. java中的alert是什么意思_javascript 中如何使用alert?
  2. 群辉NAS+KODI (二)----NAS文件配置+电视安装kodi安装配置
  3. centos7.9更改root账号密码
  4. qt窗口关闭退出程序_Qt5 窗口关闭信号的响应~
  5. (python)查看糗事百科文字 点赞 作者 等级 评论
  6. 计算机应用操作题word,计算机应用基础网考模拟练习题Word部分操作题
  7. 4-算法 与7无关的数最近的提交
  8. Debug:cuda error gcc 版本过高不支持
  9. threejs 快速入门小技巧
  10. VEH,VCH,UEF Windows向量化异常处理机制详解
  11. 有道云笔记本 html,有道云笔记怎么保存网页 有道云笔记保存路径在哪
  12. php 获取照片信息,PHP读取照片信息
  13. Android11(R)新特性梳理
  14. 第一行代码第二版6.4.1小节创建数据库中遇到adb shell出错的问题
  15. 两化融合资质认证流程
  16. 谈B2B电商平台与大数据
  17. 【python爬虫】js逆向:空气质量在线平台,解决反调试,加密
  18. ICASSP2022论文阅读记录3 - TalkingFlow
  19. JAVA线程之Thread类详解
  20. 鼠标单击、右击、双击、鼠标悬停、鼠标拖动

热门文章

  1. php 将二维数组合并,PHP二维数组合并排重的两种方式
  2. mysql使用group by实现组内排序实战
  3. 从入门到精通系列Java高级工程师路线介绍,附答案
  4. 【深度学习】深入浅出CRF as RNN(以RNN形式做CRF后处理)
  5. 【深度学习】利用神网框架分割病理切片中的癌组织(胃)
  6. 机器学习(MACHINE LEARNING)MATLAB三层神经网络的简单应用
  7. Python中的排序sorted(d.items(), key=lambda x: x[1])
  8. 软件性能测试关注点,盘点性能测试必须掌握的技术点
  9. sql时间转换时分秒_SQL数据库中的是年月日时分秒格式的,什么语句能实现年月日的查询?...
  10. 新站如何使用标签才对SEO优化更有利