news 2026/4/21 6:51:31

堆 标准模板题及基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
堆 标准模板题及基础

STL定义:

最大堆(默认):
priority_queue<int> heap;
最小堆:
priority_queue<int,vector<int>,greater<int> > heap;

注意!!!虽然是小根堆,但是这里是GREATER!!!

自定义比较器:

struct compare{ bool operater(int a,int b){ return a>b; } }; priority_queue<int,vector<int>,compare> pq;

巨坑!!!

最后一行的堆是小根堆,

return a<b;

与排序的顺序相反!

1.模板题:

P3378 【模板】堆

提交答案加入题单复制题目

提交200.08k

通过86.76k

时间限制1.00s

内存限制512.00MB

题目编号P3378

题目描述

给定一个数列,初始为空,请支持下面三种操作:

  1. 给定一个整数 x,请将 x 加入到数列中。
  2. 输出数列中最小的数。
  3. 删除数列中最小的数(如果有多个数最小,只删除 1 个)。

输入格式

第一行是一个整数,表示操作的次数 n。
接下来 n 行,每行表示一次操作。每行首先有一个整数 op 表示操作类型。

  • 若 op=1,则后面有一个整数 x,表示要将 x 加入数列。
  • 若 op=2,则表示要求输出数列中的最小数。
  • 若 op=3,则表示删除数列中的最小数。如果有多个数最小,只删除 1 个。

输出格式

对于每个操作 2,输出一行一个整数表示答案。

输入输出样例

输入 #1复制

5 1 2 1 5 2 3 2

输出 #1复制

2 5

说明/提示

【数据规模与约定】

  • 对于 30% 的数据,保证 n≤15。
  • 对于 70% 的数据,保证 n≤104。
  • 对于 100% 的数据,保证 1≤n≤106,1≤x<231,op∈{1,2,3}。
    #include <bits/stdc++.h> using namespace std; int heap[1000005]; int pos=1; void push(int x) { heap[pos]=x; int kid=pos; int dad=kid/2; while (dad>=1 and heap[kid]<heap[dad]) { swap(heap[kid],heap[dad]); kid=dad; dad=kid/2; } pos++; } void down(int n) { int self=n; while(true) { int left=2*self; int right=2*self+1; int smallest=self; if(left<pos and heap[left]<heap[smallest]) { smallest=left; } if(right<pos and heap[right]<heap[smallest]) { smallest=right; } if(smallest!=self) { swap(heap[self],heap[smallest]); self=smallest; }else{ break; } } } void del() { if (pos<=1) return; swap(heap[1],heap[pos-1]); pos--; down(1); } int main() { int n; cin>>n; while(n--) { int op; cin>>op; switch (op) { case 1: { int x; cin>>x; push(x); break; } case 2:{ if(pos>1) { cout<<heap[1]<<endl; } break; } case 3:{ del(); break; } } } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 22:39:04

python django flask鹿幸公司员工食堂在线点餐餐饮餐桌预约管理系统的设计与实现_utcnqqs0--论文

文章目录系统截图项目技术简介可行性分析主要运用技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统截图 python django flask鹿幸公司员工食堂在线点餐餐饮餐桌预约管理系统的设计与实现_utcnqqs0–论文 …

作者头像 李华
网站建设 2026/4/18 11:03:48

性价比高的老房换新实用门窗品牌精选指南排名

性价比高的老房换新实用门窗品牌精选指南排名在老房换新的过程中&#xff0c;门窗的更换是至关重要的一环。选择一款性价比高的门窗&#xff0c;不仅能提升居住的舒适度&#xff0c;还能为家居增添美观。以下为大家带来一份实用的门窗品牌精选指南。工厂直营模式&#xff1a;性…

作者头像 李华
网站建设 2026/4/20 2:50:02

好用做老房换新实用门窗品牌精选指南的机构

做老房换新实用门窗的品牌精选指南引言老房换新门窗是提升居住品质的重要工程&#xff0c;然而面对众多的门窗品牌&#xff0c;消费者往往不知如何选择。在众多选择中&#xff0c;工厂直营模式的品牌有着独特的优势。专业评估能力像采用工厂直营模式的这类品牌&#xff0c;具备…

作者头像 李华
网站建设 2026/4/17 14:06:37

灵活用工平台,我的实践复盘

灵活用工平台技术实践复盘&#xff1a;从行业挑战到解决方案的演进行业痛点分析当前&#xff0c;灵活用工平台领域正面临一系列深刻的技术挑战&#xff0c;这些挑战直接关系到平台的稳定性、合规性及用户体验。首要挑战在于海量并发处理与数据精准性。随着灵活用工模式渗透率的…

作者头像 李华
网站建设 2026/4/17 13:37:27

在duckdb 递归CTE中实现深度优先搜索DFS

原帖地址 https://github.com/duckdb/duckdb/discussions/15386 通常的递归CTE都是广度优先搜索&#xff08;BFS&#xff09; WITH RECURSIVE edges(a, b) as( VALUES(1, 2),(1, 3),(2, 4),(4, 5),(4, 6) ), bfs(node, path) AS (SELECT 1 AS node, [] :: STRUCT("from&…

作者头像 李华
网站建设 2026/4/19 4:35:08

基于记忆增强网络的语言模型推理优化

基于记忆增强网络的语言模型推理优化 关键词:记忆增强网络、语言模型、推理优化、注意力机制、深度学习 摘要:本文聚焦于基于记忆增强网络的语言模型推理优化。首先介绍了相关背景,包括研究目的、预期读者、文档结构和术语定义。接着阐述了核心概念,如记忆增强网络和语言模…

作者头像 李华