【POJ1442】Black Box
这道题可以用Splay、fhq-treap解决,但是平衡树解这道题大材小用,所以我采用了对顶堆解决。
考虑建立两个堆:以i为分割点,用大根堆存储前半段序列,用小根堆存储后半段序列。我们控制大根堆的元素个数为i,这样查询时大根堆的堆顶就是排名为i的元素。然后我们考虑维护对顶堆。
对于add操作,我们先将元素放入下面的大根堆内,从堆顶不断取出元素放到小根堆直到大根堆元素个数为i,这样大根堆的根就是第i小的元素,同时可以保证对顶堆的性质;
同理,对于get操作,我们先输出大根堆的根,然后将小根堆的根移到大根堆(因为i每次加一,要始终保证大根堆有i个元素),这样仍保证对顶堆的性质不变
因此,时间复杂度为O(nlog2n),我们用STL的优先队列即可完成。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <queue> 6 using namespace std; 7 typedef long long ll; 8 int n,m,a[200010]; 9 priority_queue<int> maxx; 10 priority_queue<int,vector<int>,greater<int> >minn; 11 int main() { 12 scanf("%d%d",&n,&m); 13 for(int i=1;i<=n;i++) 14 scanf("%d",&a[i]); 15 int now=1; 16 for(int i=1;i<=m;i++) { 17 int x; 18 scanf("%d",&x); 19 for(int j=now;j<=x;j++) { 20 maxx.push(a[j]); 21 if(maxx.size()==i) minn.push(maxx.top()),maxx.pop(); 22 } 23 now=x+1; 24 printf("%d\n",minn.top()); 25 maxx.push(minn.top()); 26 minn.pop(); 27 } 28 return 0; 29 }
AC Code
转载于:https://www.cnblogs.com/shl-blog/p/10887188.html
【POJ1442】Black Box相关推荐
- 【hihocoder】 Magic Box
题目1 : Magic Box 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 The circus clown Sunny has a magic box. When ...
- 【转】Black Box
Introduction BlackBox是FPGA设计中一个重要的技巧,不过觉得Xilinx的文档没有很好地将它讲清楚. BlackBox的主要想法就是把设计的某一个子模块单独综合,综合的结果作为一 ...
- 45个纯 CSS 实现的精美边框效果【附演示和源码】【下篇】
边框效果常用来给图片添加照片效果或用于增强页面内容片断的整体性,在一些团购网站和使用瀑布流布局的网站也经常会使用边框效果.在以前,简单的边框效果使用 CSS 可以轻松实现,但是用到阴影.弯曲和旋转等复 ...
- 45个纯 CSS 实现的精美边框效果【附在线演示和源码】【下篇】
边框效果常用来给图片添加照片效果或用于增强页面内容片断的整体性,在一些团购网站和使用瀑布流布局的网站也经常会使用边框效果.在以前,简单的边框效果使用 CSS 可以轻松实现,但是用到阴影.弯曲和旋转等复 ...
- 【hihocoder 1499】A Box of Coins
[题目链接]:http://hihocoder.com/problemset/problem/1499 [题意] [题解] 贪心,模拟; 从左往右对于每一列; 如果上下两个格子; ① 有一个格子超过了 ...
- 【20180807模拟测试】T2 box
[问题描述] 有个桌子长 R 宽 C,被分为 R*C 个小方格.其中,一些方格上有箱子,一些方格上有按 钮,一些方格上有障碍物,一些方格上是空地.现在有个任务,需要把所有箱子推到这些按 钮上面.箱子有 ...
- 【CentOS】利用Kubeadm部署Kubernetes (K8s)
[CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...
- 【camera】YOLOV7实现实例分割+目标检测任务(训练、测试、量化、部署)
[camera]YOLOV7实现实例分割+目标检测任务 代码下载地址 训练.测试.量化.部署代码 训练 For training, quite simple, same as detectron2: ...
- ue4 函数和宏区别_【UE4】通俗易懂 用蓝图来学习 C++ 基础知识
[前言]: 用老罗来学UE蓝图: https://zhuanlan.zhihu.com/p/135297007zhuanlan.zhihu.com 再开个脑洞,用蓝图来类比学习C++基础知识. C+ ...
- 是男人就下100层【第四层】——Crazy贪吃蛇(2)
在上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(1)>中我们让贪吃蛇移动了起来,接下来我们来实现让贪吃蛇能够绕着手机屏幕边线移动而且能够改变方向 一.加入状态并改动代码 首先我 ...
最新文章
- host ntrip 千寻rtk_什么是千寻知寸cors账号?它提供的定位服务精度如何?使用时需要注意哪些问题?...
- 图像 DFT 尺寸转换
- Java之进程与线程练习
- 瞧瞧,这样的『函数』才叫 Pythonic
- 5.10 阻尼倒数法
- html中超链接使用_HTML实例源码
- java dao 泛型的好处_java中泛型有什么作用
- django基础篇05-Form验证组件
- 大公司比较习惯问及的97道问题附答案
- java实现区块链p2p网络_详解区块链P2P网络
- 解决:error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“
- Photoshop-RGB色彩模式
- 华为鸿蒙麒麟玉兔_鸿蒙、麒麟、鲲鹏……这是属于中华的浪漫
- 带宽单位和下载速度的换算
- EJB2.0雨夜教程之一
- 《全栈性能测试修炼宝典 JMeter实战》目录—导读
- 酷狗音乐9.2.0_酷狗音乐安卓版 v9.2.0下载 - 艾薇下载站
- html表格与CSS控制表格样式
- Linux CFS调度器分析
- 奔涌的IPv6背后,DHCPv6协议你了解多少?
热门文章
- 判断Windows操作系统版本
- 如何优雅的使用全球最大同性社交网站
- 无缝对接Spark与R:Sparklyr系列—探讨属于数据科学家的Spark
- R语言数据清洗实战——高效list解析方案
- python基础--集合
- WPF备忘录(7)WPF图片资源路径介绍
- 谭浩强 C程序设计 8.2 求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。...
- [bzoj1969] [Ahoi2005]LANE 航线规划
- [原]android解析pdf文件muPdf
- IMapGrid/IIndexGrid/IMesureGrid使用方法及MapGridBorder的使用