zoukankan      html  css  js  c++  java
  • 单调队列学习笔记

    其实很久之前就该学单调队列了 但是一直不会又懒得学 然后就一直咕咕咕了

    单调队列一般处理区间最值的问题
    比如滑动区间
    同时可以扩展到另外一系列dp的优化 比如dp[i] 可以由dp[i-k] 到dp[i] 转移过来 直接跑是(n^2)的 但是单调队列优化之后就会降到O(n)的效率



    思想是
    维护一个队列
    每次保证队首是最优选择
    在加入一个新决策时
    通过新决策把一些不可能在成为队首的决策去掉
    然后维护一下队列单调性
    将新决策加入队尾
    每次维护之后取队首就好了
    复杂度 : 一个head指针 一个tail指针
    最坏情况下也不过是head tail从头扫一遍 也就是O(n)
    常用于优化dp



    P1886 滑动窗口 /【模板】单调队列
    很裸的单调队列题 每次维护的时候就正常去掉不符合条件的队首和队尾 取队首就好了



    P2300 合并神犇
    (我也不知道为啥(n^2)就碾过十万了)
    大概随便想想就能推出来(n^2)的转移柿子
    考虑优化就行了
    发现答案其实是满足单调的 而且每次只关心最优化决策
    所以用单调队列维护

    如初见 与初见
  • 相关阅读:
    POJ -- 3468
    HDOJ--1698
    简单的API应用
    Linux引导流程
    Python 实现网络爬虫小程序
    codeforce
    Count the string -- HDOJ 3336
    初次运行 Git 前的配置
    leetcode244- Shortest Word Distance II- medium
    leetcode243- Shortest Word Distance- easy
  • 原文地址:https://www.cnblogs.com/HISKrrr/p/13791451.html
Copyright © 2011-2022 走看看