[luoguP1168]中位数(主席树+离散化)
传送门
模板题一道,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]中位数(主席树+离散化)相关推荐
- SPOJ - COT Count on a tree(LCA+主席树+离散化)
题目链接:点击查看 题目大意:给出一棵树,每个点都有一个权值,现在给出m个询问,每次询问的格式是u,v,k,要求输出u-v这条路径上第k大的数 题目分析:一看到第k大的数就会想到主席树,既然是在树上的 ...
- 玲珑杯 1157 - 造物主的戒律 主席树+离散化
题目链接:http://www.ifrog.cc/acm/problem/1157 1157 - 造物主的戒律 Time Limit:20s Memory Limit:512MByte Submiss ...
- HDU - 6601 Keen On Everything But Triangle(主席树)
题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a ,再给出 q 次询问,每次询问给出一个区间 [ l , r ] ,要求从区间内选出三个数,使得构成的三角形周长最大,如果无解输出 - 1 ...
- HDU - 4866 Shooting(主席树+扫描线)
题目链接:点击查看 题目大意:给出 n 条平行于 x 轴的线段,每条线段都的 [ l , r ] 都位于 [ 1 , X ] 之间,每条线段的高度为 d,也就是距离 x 轴的位置,接下来给出 m 次询 ...
- 模板三连击:树状数组+线段树+主席树
没事儿干,复习模板...... 1.树状数组 本来不想写这个的,但是反正就几分钟就打完了,所以就写了,水AC数. 洛谷 P3374 [模板]树状数组 1 1 #include<cstdio> ...
- YBTOJ洛谷P2839:最大中位数(主席树、二分答案)
遇事不决,二分试试 解析 很好的一道题 真是把主席树玩明白了 一个关于中位数的常用trick: 二分答案mid,把>=mid的看成1,<mid的看成-1,然后看最大子段和是否>=0 ...
- HDU - 3804 Query on a tree(主席树维护最大值+离散化)
题目链接:点击查看 题目大意:给出一棵树,每条边上都有一个权值,给出m个查询:a,b:问从点1到点a的唯一路径上,在边权小于等于b的边中选出边权最大的值输出,若没有符合条件的边则输出-1: 题目分析: ...
- BZOJ #2874. 训练士兵(差分+离散化+主席树)
BZOJ #2874. 训练士兵 description solution code description Ryz正在着手于训练一批精锐士兵 Ryz手下有n*m个士兵,排成一个n行m列的方阵.在一天 ...
- [国家集训队]middle(二分+主席树[中位数思维题])
文章目录 点击查看 solution code 点击查看 solution 简单口胡一下就跑 考虑二分答案ansansans 区间[x1,x2],x1∈[a,b],x2∈[c,d][x1,x2],x1 ...
最新文章
- java中的alert是什么意思_javascript 中如何使用alert?
- 群辉NAS+KODI (二)----NAS文件配置+电视安装kodi安装配置
- centos7.9更改root账号密码
- qt窗口关闭退出程序_Qt5 窗口关闭信号的响应~
- (python)查看糗事百科文字 点赞 作者 等级 评论
- 计算机应用操作题word,计算机应用基础网考模拟练习题Word部分操作题
- 4-算法 与7无关的数最近的提交
- Debug:cuda error gcc 版本过高不支持
- threejs 快速入门小技巧
- VEH,VCH,UEF Windows向量化异常处理机制详解
- 有道云笔记本 html,有道云笔记怎么保存网页 有道云笔记保存路径在哪
- php 获取照片信息,PHP读取照片信息
- Android11(R)新特性梳理
- 第一行代码第二版6.4.1小节创建数据库中遇到adb shell出错的问题
- 两化融合资质认证流程
- 谈B2B电商平台与大数据
- 【python爬虫】js逆向:空气质量在线平台,解决反调试,加密
- ICASSP2022论文阅读记录3 - TalkingFlow
- JAVA线程之Thread类详解
- 鼠标单击、右击、双击、鼠标悬停、鼠标拖动
热门文章
- php 将二维数组合并,PHP二维数组合并排重的两种方式
- mysql使用group by实现组内排序实战
- 从入门到精通系列Java高级工程师路线介绍,附答案
- 【深度学习】深入浅出CRF as RNN(以RNN形式做CRF后处理)
- 【深度学习】利用神网框架分割病理切片中的癌组织(胃)
- 机器学习(MACHINE LEARNING)MATLAB三层神经网络的简单应用
- Python中的排序sorted(d.items(), key=lambda x: x[1])
- 软件性能测试关注点,盘点性能测试必须掌握的技术点
- sql时间转换时分秒_SQL数据库中的是年月日时分秒格式的,什么语句能实现年月日的查询?...
- 新站如何使用标签才对SEO优化更有利