当前位置: 首页 > news >正文

堆【模板】小根堆堆【模板】大根堆(回)

目录

堆【模板】小根堆

题目描述1

输入1

输出1

样例输入 1

样例输出 1

提示1

代码1

 堆【模板】大根堆

题目描述2

输入

输出

样例输入2

样例输出2

提示2

代码2


堆【模板】小根堆

题目描述1

初始小根堆为空,我们需要支持以下3种操作:
操作1: 1 x 表示将x插入到堆中(1e-6<=x<=1e6)
操作2: 2 输出该小根堆内的最小数,若小根堆为空,则输出empty
操作3: 3 删除该小根堆内的最小数,若小根堆为空,则输出err

输入1

第一行包含一个整数N,表示操作的个数
接下来N行,每行包含1个或2个正整数,表示三种操作,格式如下:
操作1: 1 x
操作2: 2
操作3: 3

输出1

包含若干行,根据题意输出。

样例输入 1
12
1 5
2
3
3
2
1 -5
1 7
1 -9
2
2
1 -17
2
样例输出 1
5
err
empty
-9
-9
-17
提示1

数据规模:
对于30%的数据:N<=20
对于70%的数据:N<=10000
对于100%的数据:N<=10^6
样例说明:
12
1 5
2 输出堆顶5
3 删除5
3 删堆顶时堆为空,输出err
2 取堆顶时堆为空,输出empty
1 -5
1 7
1 -9
2 输出堆顶-9
2 输出堆顶-9
1 -17
2 输出堆顶-17

代码1

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,i,fl,x,t,a[1000100];
void up(int t){
    int fa;
    while(t!=1){
        fa=t/2;
        if(a[fa]>a[t])
            swap(a[t],a[fa]),t=fa;
        else break;
    }
}
void down(int tt){
    int son;
    while(tt*2<=t){
        son=tt*2;
        if(son+1<=t&&a[son+1]<a[son])son++;
        if(a[son]<a[tt])
            swap(a[son],a[tt]),tt=son;
        else break;
    }
}

main(){
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>fl;
        if(fl==1){
            cin>>x;
            a[++t]=x;
            up(t);
        }
        else if(fl==2){
            if(t==0)cout<<"empty\n";
            else cout<<a[1]<<"\n";
        }
        else{
            if(t==0)cout<<"err\n";
            else a[1]=a[t],t--,down(1);
        }
    }
}

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,i,fl,x,t,a[1000100];
void up(int t){int fa;while(t!=1){fa=t/2;if(a[fa]>a[t])swap(a[t],a[fa]),t=fa;else break;}
}
void down(int tt){int son;while(tt*2<=t){son=tt*2;if(son+1<=t&&a[son+1]<a[son])son++;if(a[son]<a[tt])swap(a[son],a[tt]),tt=son;else break;}
}main(){cin>>n;for(i=1;i<=n;i++){cin>>fl;if(fl==1){cin>>x;a[++t]=x;up(t);}else if(fl==2){if(t==0)cout<<"empty\n";else cout<<a[1]<<"\n";}else{if(t==0)cout<<"err\n";else a[1]=a[t],t--,down(1);}}
}

 堆【模板】大根堆

题目描述2

初始大根堆为空,我们需要支持以下3种操作:
操作1: 1 x 表示将x插入到堆中(1e-6<=x<=1e6)
操作2: 2 输出该大根堆内的最大数,若大根堆为空,则输出empty
操作3: 3 删除该大根堆内的最大数,若大根堆为空,则输出err

输入

第一行包含一个整数N,表示操作的个数
接下来N行,每行包含1个或2个正整数,表示三种操作,格式如下:
操作1: 1 x
操作2: 2
操作3: 3

输出

包含若干行,根据题意输出。

样例输入2
12
1 5
2
3
3
2
1 -5
1 7
1 -9
2
2
1 217
2
样例输出2
5
err
empty
7
7
217
提示2

数据规模:
对于30%的数据:N<=20
对于70%的数据:N<=10000
对于100%的数据:N<=10^6
样例说明:
12
1 5
2 输出堆顶5
3 删除5
3 删堆顶时堆为空,输出err
2 取堆顶时堆为空,输出empty
1 -5
1 7
1 -9
2 输出堆顶7
2 输出堆顶7
1 217
2 输出堆顶217

代码2

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll i,j,a[600100],n,q,x,t,a1,T,a2,a3,fl;
void up(int t){
    int fa;
    while(t!=1){
        fa=t/2;
        if(a[fa]<a[t])
            swap(a[fa],a[t]),t=fa;
        else break;
    }
}
void down(int fa){
    int son;
    while(fa*2<=t){
        son=fa*2;
        if(son+1<=t&&a[son+1]>a[son])son++;
        if(a[fa]<a[son])swap(a[fa],a[son]),fa=son;
        else break;
    }
}
main(){
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>fl;
        if(fl==1){
            cin>>x;
            a[++t]=x;
            up(t);
        }
        else if(fl==2){
            if(t==0)cout<<"empty\n";
            else cout<<a[1]<<"\n";
        }
        else{
            if(t==0)cout<<"err\n";
            else a[1]=a[t],t--,down(1);
        }
    }
}

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll i,j,a[600100],n,q,x,t,a1,T,a2,a3,fl;
void up(int t){int fa;while(t!=1){fa=t/2;if(a[fa]<a[t])swap(a[fa],a[t]),t=fa;else break;}
}
void down(int fa){int son;while(fa*2<=t){son=fa*2;if(son+1<=t&&a[son+1]>a[son])son++;if(a[fa]<a[son])swap(a[fa],a[son]),fa=son;else break;}
}
main(){cin>>n;for(i=1;i<=n;i++){cin>>fl;if(fl==1){cin>>x;a[++t]=x;up(t);}else if(fl==2){if(t==0)cout<<"empty\n";else cout<<a[1]<<"\n";}else{if(t==0)cout<<"err\n";else a[1]=a[t],t--,down(1);}}
}

相关文章:

堆【模板】小根堆堆【模板】大根堆(回)

目录 堆【模板】小根堆 题目描述1 输入1 输出1 样例输入 1 样例输出 1 提示1 代码1 堆【模板】大根堆 题目描述2 输入 输出 样例输入2 样例输出2 提示2 代码2 堆【模板】小根堆 题目描述1 初始小根堆为空&#xff0c;我们需要支持以下3种操作&#xff1a; 操作…...

【JavaScript】JavaScript简介

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 JavaScript入门&#xff08;1&#xff09;————JavaScript简介开篇说明一、什么是JavaScript二、JavaScript的使用2.1 开发工具的选择…...

pg_rman:备份和恢复管理工具#postgresql培训

pg_rman 是 PostgreSQL 的在线备份和恢复工具。 pg_rman 项目的目标是提供一种与 pg_dump 一样简单的在线备份和 PITR 方法。此外&#xff0c;它还为每个数据库集群维护一个备份目录。用户只需一个命令即可维护包括存档日志在内的旧备份。 #PG培训#PG考试#postgresql考试#pos…...

【小学期】常用基于Swing的七个静态界面

示例1&#xff1a;基本的带按钮和标签的界面 import javax.swing.*; import java.awt.*;public class SimpleSwingApp1 {public static void main(String[] args) {JFrame frame new JFrame("Simple Swing App 1");frame.setDefaultCloseOperation(JFrame.EXIT_ON_C…...

JavaScript高级程序设计(第四版)--学习记录之迭代器与生成器(上)

什么是迭代&#xff1f; 迭代的意思是按照顺序反复多次执行一段程序。循环是迭代机制的基础&#xff0c;因为它可以指定迭代的次数&#xff0c;以及每次迭代要执行的操作。 迭代器模式 迭代器模式描述了一个方案&#xff0c;可以把有些结构称为“可迭代对象” &#xff0c;这些…...

51单片机第9步_结构和联合

本章重点学习结构和联合。 //结构和联合应用举例 #include <REG51.h> //包含头文件REG51.h,使能51内部寄存器; #include <stdio.h> //包含头文件stdio.h //_getkey();从串口读入一个字符; //putchar();向串口发送一个字节; //printf();向串口发送一串字节; /…...

lua5.3.4的Linux的库文件下载地址

从这个链接选lua5.3.4 Lua Binaries (sourceforge.net) 进入-> 这个页面 LuaBinaries - Browse /5.3.4/Linux Libraries at SourceForge.net 之后就可以下载了。...

网盘挂载系统-知识资源系统-私域内容展示系统

系统介绍&#xff1a; 存储&#xff1a;一共支持约30款云盘存储&#xff0c;其中包括主流的&#xff08;百度网盘、阿里云盘、夸克云盘、迅雷云盘、蓝奏云、天翼云盘&#xff09;&#xff0c;部分展示 以及特别的&#xff08;一刻相册、对象存储、又拍云存储、SFTP、MEGA 网盘…...

水位自动监测摄像机

随着科技的不断进步&#xff0c;水位自动监测摄像机作为现代智能监控技术的重要应用&#xff0c;正在广泛应用于水利工程、防洪管理和环境监测等领域&#xff0c;显著提升了监测效率和数据准确性。水位自动监测摄像机利用高精度摄像头和先进的图像处理技术&#xff0c;能够实时…...

基于SSM+Jsp的疫情居家办公OA系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…...

phpstorm2024代码总是提示“no usages”或者“无用法”解决办法

问题&#xff1a;phpstorm2024使用时&#xff0c;总是会提示无用法&#xff0c;如果没有安装中文语言包的情况下会提示&#xff1a;no usages&#xff0c;如果想关闭怎么办&#xff1f; 编译器右上角点击齿轮进入设置&#xff0c;按照下图的方法点击即可关闭。或者在编译器的“…...

Unity WebGL项目问题记录

一、资源优化 可通过转换工具配套提供的资源优化工具&#xff0c;将游戏内纹理资源针对webgl导出做优化。 工具入口&#xff1a; 工具介绍 Texture 搜索规则介绍 已开启MipMap: 搜索已开启了MipMap的纹理。 NPOT: 搜索非POT图片。 isReadable: 搜索已开启readable纹理。 …...

如何级联移位寄存器(74HC595)

在这个项目中&#xff0c;我们将使用 74HC595 移位寄存器将 2 个移位寄存器级联在一起。这样级联移位寄存器现在可以控制 16 个输出。 当然您可以级联任意数量的移位寄存器。如果您要级联第三个移位寄存器&#xff0c;它可以控制 24 个输出。如果您级联第四个移位寄存器&#x…...

找到你的专属健康食谱:结合肠道菌群与疾病状态

谷禾健康 俗话说&#xff1a;“病从口入”。饮食是决定个人健康状况的重要因素&#xff0c;饮食与疾病的发展有关&#xff0c;特别是胃肠道(GI)疾病。 与膳食相关的症状发生率很高&#xff0c;例如在吸收不良(如乳糖不耐症)情况下出现的腹痛和腹泻&#xff1b;乳糜泻、食物过敏…...

大模型微调实战之基于星火大模型的群聊对话分角色要素提取挑战赛:Task01:跑通Baseline

目录 0 背景1 环境配置1.1 下载包1.2 配置密钥1.3 测试模型 2 解决问题2.1 获取数据2.2 设计Prompt2.2 设计处理函数2.3 开始提取 附全流程代码 0 背景 Datawhale AI夏令营第二期开始啦&#xff0c;去年有幸参与过第一期&#xff0c;收获很多&#xff0c;这次也立马参与了第二…...

大数据开发如何管理项目

在面试的时候总是 会问起项目&#xff0c;那在大数据开发的实际工作中&#xff0c;如何做好一个项目呢&#xff1f; 目录 1. 需求分析与项目规划1.1 需求收集与梳理1.2 可行性分析1.3 项目章程与计划 2. 数据准备与处理2.1 数据源接入2.2 数据仓库建设2.3 数据质量管理 3. 系统…...

在实施数据加密时,有哪些常见的加密技术可供选择?

在实施数据加密时&#xff0c;有哪些常见的加密技术可供选择&#xff1f; 在实施数据加密时&#xff0c;有许多常见的加密技术可供选择&#xff0c;这些技术根据其原理、安全性、效率和适用场景有所不同。以下是一些常见的加密技术&#xff1a; 对称加密&#xff08;Symmetri…...

容易涨粉的视频素材有哪些?容易涨粉的爆款短素材库网站分享

如何挑选社交媒体视频素材&#xff1a;顶级视频库推荐 在社交媒体上脱颖而出&#xff0c;视频素材的选择至关重要。以下是一些顶级的视频素材网站推荐&#xff0c;不仅可以提升视频质量&#xff0c;还能帮助你吸引更多粉丝。 蛙学网&#xff1a;创意的源泉 作为创意和独特性的…...

2024 CISCN 华东北分区赛-Ahisec

Ahisec战队 WEB python-1 break 源码如下&#xff1a; # -*- coding: UTF-8 -*-from flask import Flask, request,render_template,render_template_stringapp Flask(__name__)def blacklist(name):blacklists ["print","cat","flag",&q…...

Linux驱动开发笔记(十三)Sysfs文件系统

文章目录 前言一、Sysfs1.1 Sysfs的引入1.2 Sysfs的目录结构1.2 Sysfs的目录详解1.2.1 devices1.2.2 bus1.2.3 class1.2.4 devices、bus、class目录之间的关系1.2.5 其他子目录 二、Sysfs使用2.1 核心数据结构2.2 相关函数2.2.1 kobject_create_and_add2.2.2 kobject_put()2.2.…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里

写一个shell脚本&#xff0c;把局域网内&#xff0c;把能ping通的IP和不能ping通的IP分类&#xff0c;并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...

在Spring Boot中集成RabbitMQ的完整指南

前言 在现代微服务架构中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件&#xff0c;支持多种消息协议&#xff0c;具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...