首页 > 其他分享 >双端队列

双端队列

时间:2024-04-10 12:44:43浏览次数:23  
标签:下标 队列 双端 后面 考虑 递减

这里对做法补充一下

首先肯定有两个考虑对象嘛,考虑双端队列或者考虑数值,既然双端队列是不好考虑的(指正着想),那就考虑数值喽(反着想,最终的序列一定是确定的)

然后是一个证明,其实我自己的排序方法是一个数一个数看的,对于当前循环到的数,比如处于递减状态,我们考虑这个数所有的下标,把能接在后面的就接在后面

比如,上一个下标是\(3\),然后处于递减状态,当前区间还剩下的数是\(1,2,4,5\),那么我们就排成\(2,1,4,5\)

这里用决策包容性证明,贪心策略相当于是(以递减为例)当前区间剩下的数中小于上一个数的最大的数\(x\)接在上一个数\(y\)的后面

如果不这样,那么考虑这个\(x\),肯定是要被放在某个双端队列的里面的,无论在这个双端队列里面是开头还是非开头,我们都将\(x\)拿出来,这个双端队列显然也合法,然后将\(x\)放在\(y\)的后面,显然也是合法的,而且双端队列的个数不会增加,证毕

标签:下标,队列,双端,后面,考虑,递减
From: https://www.cnblogs.com/dingxingdi/p/18125788

相关文章

  • 2849: 【广度优先】【优先队列】游戏装备
     题目描述小未在玩一款武侠游戏,游戏里PK不仅要有高超的操作和智慧,还要有很牛的装备。现在他进入了一个副本,副本里面有极品15星的装备宝箱,但是从副本入口到宝箱有很多条路,当然不可能轻轻松松的拿到极品装备。一路上会随机刷出各种攻击力很强的怪物。它会攻击小未的角色,当然也......
  • 进程间通信(队列和生产者消费者模型)
    进程间通信(队列和生产者消费者模型)一、关于进程间通信[1]什么是进程间通信(Inter-ProcessCommunication,IPC)进程间通信(Inter-ProcessCommunication,IPC)是指两个或多个进程之间进行信息交换的过程。它是一种计算机编程技术,用于在不同进程之间共享数据和资源。[2]如何实......
  • 数据结构----栈和队列详细操作完整代码(C语言)
    栈和队列是两种常用的,重要的数据结构栈和队列是限定插入和删除只能在表的“端点”进行的线性表栈和队列是线性表的子集(是插入和删除位置受限的线性表)栈定义:只能在表的一端(栈顶)进行插入和删除运算的线性表逻辑结构:与线性表相同,仍为一对一关系存储结构:用顺序栈或链栈存......
  • 优先队列的基本实现【数据结构与算法—TypeScript 实现】
    笔记整理自coderwhy『TypeScript高阶数据结构与算法』课程特性效率比普通队列高每个出队元素拥有最高优先级可以用数组、链表等数据结构实现,但是堆结构是最常用的实现方式设计实现方式:基于堆结构实现,堆结构底层基于数组实现属性:heap:存放队列元素方法:enq......
  • 队列-单端队列
    队列和栈非常类似,栈的一端是封闭的,类似一口深井,遵循先进后出原则FILO.队列则两端是放开的,抽象于现实世界的排队现象,遵循先进先出原则FIFO.队列在尾部进行元素的新增,称为"入队",然后从头部移除元素,成为"出队".生活中我们去坐火车进站检票,去某个机关办理......
  • Kafka、ActiveMQ、RabbitMQ、RocketMQ四大消息队列优劣对比与选择指南
    在分布式系统架构中,消息队列(MessageQueue,MQ)扮演着至关重要的角色,它作为异步通信的核心组件,能够实现系统解耦、削峰填谷、数据缓冲等功能。本文将聚焦于四大主流消息队列——Kafka、ActiveMQ、RabbitMQ、RocketMQ,深度剖析它们各自的优缺点,并在最后提供一份详尽的选择指南,以助......
  • 如何使用Java和RabbitMQ实现延迟队列(方式二)?
    前言昨天写了一篇关于Java和RabbitMQ使用插件实现延迟队列功能的文章,今天来讲下另外一种方式,不需要RabbitMQ的插件。前期准备,需要安装好docker、docker-compose的运行环境。需要安装RabbitMQ的可以看下面这篇文章。如何使用PHP和RabbitMQ实现消息队列?-CSDN博客使用RabbitM......
  • 如何使用Java和RabbitMQ实现延迟队列?
    前言今天我们使用Java和RabbitMQ实现消息队列的延迟功能。前期准备,需要安装好docker、docker-compose的运行环境。需要安装RabbitMQ的可以看下面这篇文章。如何使用PHP和RabbitMQ实现消息队列?-CSDN博客今天讲的是依赖RabbitMQ的延迟插件实现消息队列的延迟功能。如何安装......
  • Offer必备算法22_优先级队列_堆_四道力扣题详解(由易到难)
    目录①力扣1046.最后一块石头的重量解析代码②力扣703.数据流中的第K大元素解析代码③力扣692.前K个高频单词解析代码④力扣295.数据流的中位数解析代码本篇完。①力扣1046.最后一块石头的重量1046.最后一块石头的重量难度简单有一堆石头,每块石头的重......
  • java中的栈和队列
    java中的栈和队列栈特点:先进后出插入和删除只能在一段进行(栈顶),另一端称为(栈底)插入和删除的时候时间复杂度都是最理想的O(1)java中提供了一个类:Stack,并且实现了泛型方法:empty()检测栈是否为空peek()查看头部元素,不删除pop()删除头部元素,并返回删除的元素push()将该元素......