对顶堆学习笔记

news2024/11/16 1:49:46

对顶堆学习笔记

文章目录

  • **对顶堆学习笔记**
    • 介绍
    • 例题
      • 洛谷 P1168 中位数
        • code

介绍

对顶堆是由一个大顶堆和一个小顶堆组合而成的数据结构,与传统堆维护最大数不同,对顶堆用于动态维护第k大的数。

对于对顶堆,我们可以用两个优先队列来表示两个堆。而他所维护的,我们可以看成一个单调的序列

如图:

注意一下每次加入后,处理一下两个堆的长度必须小于等于1。

例题

洛谷 P1168 中位数

题目传送门

版题

code

#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
using namespace std;
const int N = 100005;
int n , a[N] , l1 , l2;
priority_queue<int> s1;
priority_queue<int , vector<int> , greater<int>> s2;
void add (int x) {
    if (s1.empty() && s2.empty()) {
        s1.push (x) , l1 ++;
        return;
    }
    int k = s1.top ();
    if (x >= k) s2.push (x) , l2 ++;
    else s1.push (x) , l1 ++;
    if (l1 - l2 > 1) {
        k = s1.top ();
        s1.pop();
        s2.push(k);
        l1 -- , l2 ++;
    }
    if (l2 - l1 > 1) {
        k = s2.top ();
        s2.pop();
        s1.push(k);
        l2 -- , l1 ++;
    }
}
int query () { return l1 > l2 ? s1.top() : s2.top(); }
int main () {
    scanf ("%d" , &n);
    fu (i , 1 , n)
        scanf ("%d" , &a[i]);
    for (int i = 1 ; i <= n ; i += 2) {
        if (i == 1)
            add (a[1]);
        else {
            add (a[i - 1]);
            add (a[i]);
        }
        // cout << s1.top () << " " << s2.top() << "\n";
        printf ("%d\n" , query());
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IllegalArgumentException: OnNoRibbonDefaultCondition异常与Maven Helper插件解决jar包冲突

在搭建Spring Cloud项目时&#xff0c;引入了不同版本的jar&#xff0c;导致项目启动时报错: main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.Bea…

Python 制作英文学习词典(简易版)

前言 今日分享 Python 制作英文学习词典&#xff0c;大家都可以尝试。 题目 制作英文学习词典。编写程序制作英文学习词典&#xff0c;词典有3个基本功能&#xff1a;添加、查询和退出。程序读取源文件路径下的txt格式词典文件&#xff0c;若没有就创建一个。词典文件存储方…

arcgis js 4.x加载自定义坐标系的arcgis server发布的wms服务

一、问题描述 一般城市本身用的都是自己定义的城市&#xff08;本地&#xff09;坐标系&#xff0c;没有对应公开的EPSG代码&#xff0c;如下图如果直接加载自定义坐标系的wms服务&#xff0c;直接会报错。 var customProjLayer new WMSLayer({url: "http://10.1.8.37:6…

封装一个带el-form的,带el-table的,带分页的,带搜索查询的dialog组件,很使用的二次封装组件。

#封装dialog小案例 提示&#xff1a;这是我工作中封装的代码&#xff0c;很使用&#xff0c;需要的可以拿去&#xff0c; 在我们的代码中往往会出现点击按钮出现弹窗进行操作&#xff0c;那么我们就需要对dialog进行一个二次封装。 下边是大概的一个样式。 ##对组件进行二次…

C语言中一维数组及二维数组的运用

1、int arr[] {12,3,4,5,6}; int * p arr; int * q &arr[1]; 其中arr是数组名&#xff0c;代表了整个数组的首元素地址&#xff0c;这个是一个常量&#xff0c;放在常量存储区&#xff0c;所以在给int*p赋值的时候可以不用带&&#xff0c;而下面的arr[1]则代表数…

unidbg或者java层解密方法IDEA中打包成jar包供python调用方法

一、导出jar包方法 &#xff08;1&#xff09;配置jar包参数 &#xff08;2&#xff09;创建生成jar包 成功生成&#xff01; 二、Python代码调用 import jpypejvmPath jpype.getDefaultJVMPath() d unidbg-android.jar # 对应jar地址 jpype.startJVM(jvmPath, "-ea&q…

cloudflared tunnel后台启动

前期视频链接 先前台启动&#xff0c;本文参考 cloudflared tunnel --url localhost:88 run ruoyu 或者 cloudflared tunnel --url localhost:88 --no-chunked-encoding run ruoyu找到你的uuid.json 文件 创建你的config.yaml 或config.yml 内容如下 uuid 配置自己的 url: …

创建员工表并按要求完成数据

mysql> create table employee( id int primary key, name varchar(50), gender enum(男,女) default 男, salary int ); Query OK, 0 rows affected (0.01 sec)mysql> mysql> desc employee; ------------------------------------------------------ | Field | T…

spring重点标签有哪些

<bean>标签 id属性:在容器中Bean实例的唯一标识&#xff0c;不允许重复 class属性:要实例化的Bean的全限定名 scope属性:Bean的作用范围&#xff0c;常用是singleton(默认)和prototype <property>标签:属性注入 name属性:属性名称 value属性:注入的普通属性值 ref属…

Perfetto概览

1、Perfetto 简介 Perfetto是谷歌提供的一个用于性能检测和 trace 文件抓取分析的生产级开源工具包。它可以帮助我们进行应用层面以及系统层面的 trace 文件抓取、native/java 内存剖析。它还提供了一个强大的库能够帮助我们在 web 网页上对抓取的trace 文件进行可视化分析&am…

java项目之农产品供销服务系统(ssm+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的农产品供销服务系统。 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm&#xff0c;mybatis JDK…

关于chrome禁止混合内容造成的问题

混合内容 chrome 对混合内容的定义 是指 存储于http协议下的静态资源与https协议下的资源混用 Chrome官方相关说明 chrome 通过安全策略将 http强制转换为https 这会导致存储于http协议下的 文件出现协议问题从而无法访问 例&#xff1a; 从http文件服务器中引用一张图片到配…

LinearAlgebraMIT2_1_TheColumnSpaceOfAContainsAllVectorsAx

对于Axb&#xff0c;我们要迅速想到线性组合&#xff0c;如下&#xff0c; 我们也可以使用rank秩来反应一个矩阵的特征&#xff0c;如果满秩则可以表示整个向量空间&#xff0c;如上只有两个independent column&#xff0c;它的rank2&#xff0c;表达一个plane平面。 接下来我…

一款玩法十分经典的RPG游戏《QQ宠物大乐斗2》

文章目录 介绍界面介绍游戏主界面&#xff1a;出城界面&#xff1a; 战斗系统主动战斗被动战斗 技能系统主动技能被动技能五神技狂龙傲天拳惊天混元掌灵气寒霜指道威无极真气八卦迷踪腿 道具系统装备系统装备品质装备展示装备获得方式 玩家升级系统通过升级增加属性点使用道具更…

MySQL复习指南

1.数据类型 【数值型】 int或者integer&#xff0c;大小为4个字节&#xff0c;范围&#xff1a;&#xff08;大约&#xff09;-21.5亿~21.5亿&#xff1b; bigint&#xff0c;大小为8个字节&#xff1b; float大小为4个字节&#xff1b; double大小为8个字节&#xff1b; …

为什么要做海外应用市场排名

谷歌和苹果iOS应用商店的算法关键指标&#xff0c;都是基于确保应用商店推荐的应用可以满足大部分用户的需求。基于此&#xff0c;应用覆盖的关键词&#xff0c;应用评分和评论&#xff0c;和应用获取的下载量所体现的用户体验数据&#xff0c;对我们的应用能否获得商店高排名都…

Ajax简介和实例

目录 什么是 AJAX &#xff1f; AJAX实例 ajax-get无参 ajax-get有参 对象和查询字符串的互转 ajax-post ajax-post 表单 AJAX 是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。 什么是 AJAX &#xff1f; 菜鸟教程是这样介绍的&#xff1a…

MySQL数据修改和插入数据

1.创建表&#xff1a; 创建员工表employee&#xff0c;字段如下&#xff1a; id&#xff08;员工编号&#xff09;&#xff0c;name&#xff08;员工名字&#xff09;&#xff0c;gender&#xff08;员工性别&#xff09;&#xff0c;salary&#xff08;员工薪资&#xff09; …

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(二)

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python面试专栏&#xff1a;《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; …

Python基础综合案例-数据可视化(柱状图)

今天给大家带来的是Python综合实战开发的数据可视化操作 通过python实现对数据的分析、可视化 数据来源:线上公布数据&#xff0c;需要可私信 前期准备工作&#xff1a;Python可视化准备工作 前期模块安装等前期基础的准备工作大家可以看我之前的文章讲解&#xff0c;有问题可…