news 2026/9/1 23:22:36

堆 标准模板题及基础

作者头像

张小明

前端开发工程师

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/9/2 5:41:21

灵遁者:量子基元理论带来的新观点

第二十一章&#xff1a;量子基元理论带来的新观点“量子基元”是理论假设的终极实在&#xff0c;是构建宇宙万物的唯一“砖石”。它并非一个传统意义上的粒子或物体&#xff0c;因此其特点和描述方式需要一套全新的语言。以下是对“量子基元”的核心特点及其描述方式的系统阐述…

作者头像 李华
网站建设 2026/9/1 16:21:39

花边服饰银发红眸者山间近景

随机种子(Seed)&#xff1a;2266176271随机种子(Seed)&#xff1a;3732077196 参数 模型&#xff1a;Nordrin_little&#xff08;诺德琳little&#xff09; 正向提示词&#xff1a; (masterpiece, best quality, high quality, highres, ultra-detailed),short hair,silver hai…

作者头像 李华
网站建设 2026/8/31 23:38:39

9 个降AI率工具,MBA 学员必看!

9 个降AI率工具&#xff0c;MBA 学员必看&#xff01; AI降重工具&#xff1a;MBA学员论文的智能助手 在当前学术环境中&#xff0c;随着AI技术的广泛应用&#xff0c;越来越多的论文中出现了明显的AIGC痕迹。对于MBA学员而言&#xff0c;这不仅影响论文的整体质量&#xff0c;…

作者头像 李华
网站建设 2026/9/1 9:27:06

3D打印与低压灌注硅胶复模小批量零件生产制造

3D打印与低压灌注硅胶复模小批量零件生产制造 “纠结了半个月&#xff0c;还是选了硅胶复模工艺&#xff01;60套智能家电控制面板5天交付&#xff0c;成本比低压灌注省了25%&#xff0c;精度还完全达标。”杭州某智能家居企业研发总监陈总近日的决策&#xff0c;解决了不少中…

作者头像 李华
网站建设 2026/9/2 0:37:07

学Simulink——机器人控制场景实例:基于Simulink的SCARA机械臂关节空间PD控制仿真

目录 手把手教你学Simulink 一、引言:为什么“工业机械臂能快速又精准地完成重复定位”?——因为在关节空间采用简单而有效的PD控制! 二、SCARA机械臂结构与动力学基础 1. 机械结构(4-DOF,但通常3轴运动) 2. DH参数(简化版) 3. 动力学模型(拉格朗日法) 三、控制…

作者头像 李华
网站建设 2026/9/2 21:28:00

洞察:MCP与Function Calling区别

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;与Function Calling&#xff08;函数调用&#xff09;是当前大模型与外部世界交互的两项关键技术&#xff0c;它们协同工作但又存在本质区别。简单来说&#xff0c;Function Calling是LLM&#xf…

作者头像 李华