P1801 黑匣子 题解
传送门
本蒟蒻在洛谷的第一篇题解
我用的是对顶堆
堆用的是STL的priority_queue
对顶堆
顾名思义对顶堆就是两堆组合在一起
上面是小根堆下面是大根堆
如何应用
对于每次 add 我们先把数放在大根堆中
然后把大根堆的根放入小根堆中,再弹出大根堆的根,直到大根堆中只剩下 i 个元素
对于每次 get 我们先输出大根堆的根
∵大根堆的根就是第 i 小的
然后把小根堆的根放入大根堆中,然后弹出小根堆的根
∵ i 是递增的
优美代码
#include<iostream>
#include<queue>
#include<deque>
using namespace std;
int main()
{int m, n;priority_queue<int> big;priority_queue<int, vector<int>, greater<int>> small;deque<int> add;cin >> m >> n;for (int i = 1; i <= m; i++){int tmp;cin >> tmp;add.push_back(tmp);}for (int i = 1; i <= n; i++){int tmp;cin >> tmp;while (m - add.size() < tmp){big.push(add.front());add.pop_front();}while (big.size() > i){small.push(big.top());big.pop();}cout << big.top() << endl;if (!small.empty()){big.push(small.top());small.pop();}}return 0;
}
P1801 黑匣子 题解相关推荐
- P1801 黑匣子_NOI导刊2010提高(06)
P1801 黑匣子_NOI导刊2010提高(06) 题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个 ...
- 洛谷P1801 黑匣子 双堆套路的使用
题意 题目链接 题解 这道题本可以用Treap暴力求解出来,但是不够优雅,因为没有充分利用到题目中给的条件,那就是要求的ithithith小的值的iii是单调递增的. 我们用两个堆来维护,大顶堆和小顶 ...
- 洛谷 [P1801] 黑匣子
这道题是一道splay裸题,然而身为蒟蒻的我并不会,所以这道题我维护的是一个大根堆与一个小根堆结合起来的类似沙漏的结构. 本题难点在于询问的不是最大最小值,而是第K小值,所以我们想到了维护这样两个堆, ...
- 洛谷P1801 黑匣子
题目描述 Black Box 是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量 ii.最开始的时候 Black Box 是空的.而 i=0i=0.这个 Black Box 要处理一串命令 ...
- 2019.2-2019.3 TO-DO LIST
DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) ...
- [NHZXOI2017]二叉堆
(二叉)堆是以数组储存的完全二叉树,是一种实现优先队列的数据结构. 堆的定义:n个元素要成为堆,当且仅当它的元素k1,k2,--,kn满足关系如下: ki<=k2*i ki<=k2*i+ ...
- 题解【黑匣子_NOI导刊2010提高(06)】(洛谷P1801)
题目大意 给出一个长度为\(M\)序列\(A\),表示第\(i\)回合将\(A_i\)放入一个箱子中(共有\(M\)回合),再给出一个长度为\(N\)序列\(B\),表示在\(B_i\)回合执行一次\ ...
- 【C语言入门】SDUT《程序设计基础I 》实验1-顺序结构程序设计题解 c语言入门语法讲解
SDUT<程序设计基础I >实验1-顺序结构程序设计题解 && c语言语法讲解 链接 前言: 为方便更多同学入门C语言, 特在此编写SDUT OJ c语言入门150题题解即 ...
- [JS][dfs]题解 | #迷宫问题#
题解 | #迷宫问题# 题目链接 迷宫问题 题目描述 定义一个二维数组 N*M ,如 5 × 5 数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 1, 1 ...
- [JS][dp]题解 | #打家劫舍(一)#
题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家, ...
最新文章
- Spring Boot @ConfigurationProperties使用指导
- 均方差误差函数(使用函数方式实现MSE计算)
- java内存模型 年轻代/年老代 持久区
- 3 种发布策略,解决 K8s 中快速交付应用的难题
- 风险平价策略python代码_风险平价组合(risk parity)理论与实践
- LiveVideoStack线上分享第三季(三):大规模视频处理的挑战与应对
- Xcode模版生成文件头部注释
- Python-关于正则表达式的总结
- 高级点的php书,深入理解php:高级技巧、面向对象与核心技术(原书第3版) 中文pdf扫描版[76MB]...
- 敏友的【敏捷个人】有感(6): 我的改变从执行力分享开始
- Javascript使用技巧-提高工作效率
- 公里与英里的换算c语言函数_这些天然气单位换算你知道吗?
- opencv python3 找图片不同_使用OpenCV和Python查找图片差异
- 人力资源管理教程 HR自学视频教程
- 计算机视觉硕士课程南京大学,南京大学计算机系研究生课程文库
- 通过DXGI实现高效抓屏
- Java项目(前端vue后台java微服务)在线考试系统(java+vue+springboot+mysql+maven)
- 【Int. J. Mol. Sci.】黄瓜液泡转化酶基因CsVI1参与对低温胁迫的响应和己糖积累
- 软考信息系统项目管理师(高项),论文该怎么准备?
- 腾讯云学生服务器入口地址(腾讯云​学生机官网)