zoukankan      html  css  js  c++  java
  • 单调队列相关

    • 单调队列的内容

    顾名思义, 始终 单调递增单调递减双端队列 即为单调队列 .

    接下来以 滑动窗口 为例说一下基础的单调队列操作.

    设当前枚举到了 AiA_i, 且维护的是从队首到队尾单调递增的队列, (队首比队尾入队时间早)

    1. 若队列为空, 直接将 AiA_i 入队.
    2. 若队列不为空, 设队尾为 bkbk,
      1. Abk>AiA_{bk}>A_i, 则不断弹出队尾, 直到 Abk<=AiA_{bk}<=A_i.
      2. Abk<=AiA_{bk}<=A_i, 直接从队尾入队 .

    由于 队首 可能不在题目中的 “滑动窗口” 中, 所以每次输出答案时要弹掉不合法的元素, 最后最小值即为 队首 .

    时间复杂度 O(N)O(N) .

    最大值同理, 这里不再赘述.

    • 单调队列的应用

    单调队列同样可以作为 斜率优化 实现的工具, 没学过斜率优化的同学可以点击 这里.

    例题 .

  • 相关阅读:
    (转)HTTP协议
    函数深入理解---函数的定义方式
    DOM模型和事件处理---事件处理
    DOM模型和事件处理---节点操作
    DOM模型和事件处理---基本操作
    常用知识
    窗口对象
    简单的事件处理
    Grunt
    基本操作
  • 原文地址:https://www.cnblogs.com/zbr162/p/11822557.html
Copyright © 2011-2022 走看看