首页 > 其他分享 >双栈维护头尾操作

双栈维护头尾操作

时间:2024-11-17 14:59:08浏览次数:1  
标签:头尾 star 双栈 操作 维护 stal

是如下的数据结构。

我们需要支持头尾增删,以及全局查询的操作。

蠢笨的做法是使用线段树分治,但会多 \(\log\),使用双栈可以做到线性。

操作如下:

  • 开两个栈 \(stal,star\),分别处理头尾的增删

  • 增:头增 \(stal\),尾增 \(star\)

  • 删:与增类似,但是栈空时特别处理:

    • 双栈大小之和不超过 \(1\) 特判

    • 否则将有数字的那个栈切为两半,均分到两个栈里面 注意顺序,应当是这一半倒着插入另一个栈

  • 查:合并两个栈顶信息。

时间复杂度考虑双栈大小之差 \(d\),显然 \(d\) 增量之和不超过 \(n\),而减量之和不超过 \(n\),每次调整会使得 \(d\) 减小一半,均摊同样 \(O(n)\)。

例题:

贪玩蓝月

利用双栈维护背包模板题。

CF2026F

对于 \(1,2,3\) 操作,都新开一个版本,然后建立操作树,这样我们每次进入一个节点都只会进行一个操作,离开时撤销这个操作,利用双栈维护背包即可。

标签:头尾,star,双栈,操作,维护,stal
From: https://www.cnblogs.com/spdarkle/p/18550558

相关文章

  • 设备管理系统功能拆解——设备维护保养管理
    设备维护保养是企业日常运营中不可忽视的一环,无论是生产设备还是办公设备,都需要定期的维护和保养,以确保其正常运行。设备维护保养的管理,不仅仅是日常工作,更是保障企业生产效率和设备寿命的关键,系统化管理维护保养工作可以显著提高设备的可靠性和使用寿命。那么,一个高效的设备维......
  • P8868 [NOIP2022] 比赛(线段树维护区间历史和)
    题意给定排列\(a,b\),\(q\)次询问\(l,r\),你需要求出\(\sum_{l\lel'\ler'\ler}(\max_{i=l'}^{r'}a_i)(\max_{i=l'}^{r'}b_i)\)对\(2^{64}\)取模的值。\(n,q\le2.5\times10^5\)分析根据经典套路,按\(r\)扫描线,维护两个单调栈,那么加入一个数就相当于进行若干段区......
  • 根据选择条件展示sm30表维护
    首先创建表维护 ZYKTFI0063B,然后通过以下程序调用SM30*&---------------------------------------------------------------------**&ReportZFIR0137*&---------------------------------------------------------------------**&*&----------------------------------......
  • 提高代码可读性、易维护性和可扩展性的实践指南
    在软件开发过程中,代码的质量直接影响到项目的成功与否。良好的代码不仅能够减少错误,提高开发效率,还能够增强团队协作,降低后续维护成本。本文将从提高代码可读性、易维护性和可扩展性三个方面出发,结合HarmonyOSSDK的实际应用案例,为开发者提供一些实用的建议和最佳实践。一、......
  • ABB喷涂机器人控制柜维护保养
    ABB喷涂机器人的管理与维护保养目的是减少机器人的故障率和停机时间,充分利用机器人这一生产要素,最大限度地提高产效率。喷涂机器人维修与保养在企业生产中尤为重要,直接影响到系统的寿命,必须精心维护。ABB喷涂机器人保养和维护一般要做那些事情呢,主要包括一般性保养......
  • 保险公司咨询帮助中心的搭建与维护
    大家晚上好,这里是ai元启航,今天这篇分享的文章涉及行业是保险公司。一、引言随着保险行业的快速发展,客户对保险服务的需求日益多样化、个性化。为了更好地满足客户需求,提升服务质量,保险公司纷纷搭建咨询帮助中心。本文将探讨保险公司咨询帮助中心的搭建与维护策略,旨在为保险公司......
  • 对于“远古项目”的再开发和维护(如何处理学长的老旧项目)
    引言 相信很多小伙伴都有过“继承”学长“远古项目”的经历,你的学长也好指导老师也好,会让你去续写一个项目,或者是继续维护下去,那么突然拿到上万行的代码我们应该怎么办呢(特别是其中有一些技术还特别远古,像看天书一样)本文讲述了我的亲身参与的项目改写,希望可以帮助大家解决......
  • [Tricks-00002]CF2026F 操作建树&维护带删deque信息的经典套路
    这怎么是*2700???我大受震撼了好吧。简要题意:有一个初始长度是\(cnt=1\)的序列\(S\),序列每个位置都是若干个二元组\((p,t)\)组成的可重集,初始时\(S_1\)为空集。\(q\)组操作(为修改或询问),有如下四种操作:1x:把\(S_x\)复制到一个新加的点\(S_{++cnt}\)上。2xpt:将\((p......
  • Kubernetes 维护指导
    Kubernetes维护指导Kubernetes维护指导如果你在阅读本文时发现了任何错误,请在Github上提交ISSUE(或PR),我将由衷地表示感谢。为了方便阅读,请点击网页右侧的按钮在右侧展开目录以了解全文大纲。1.节点管理在此章节中,本文将以Kubernetes集群中的节点管理为主题进行深入探讨......
  • 树状数组--区间信息维护
    树状数组树状数组的学习可以看b站董晓算法的讲解(极力推荐)。董老师树状数组博客oiwiki大概的思路无论是往点修往后跳还是求前缀和往前跳都是一次跳2k,k为x二进制最低有效位。代码模版template<typenameT>structFenwick{intn;vector<T>tr;Fenw......