zoukankan      html  css  js  c++  java
  • 单调序列例题

    一,

    给定一个区间,求所有区间长度为L的区间的最大值和最小值

    二,

    该题有很多做法。

    自然用的是滑动窗口(单调队列)

    可能的做法:

    O(nlogn)的线段树

    O(nlogn)的带删除优先队列(对顶堆)

    还能再快一点吗?

    O(n)-O(1)RMQ代替线段树

    三,

    单调队列和单调栈的意思一样,始终要你维持一个单调递增或者递减的属性。

    比你小还比你强,我哭了。

    1 const int N= 5000010 ;
    2 int q[N],l=1,r=1,a[N] , mx , mn, inq[N],n,m; 
    inline void ins(int x){ 3 while(l<r&&q [r-1]<=a[x])r--; 4 q[r]=a[x]; inq[r]=x;r++; 5 } 6 inline int getmax(int cur){ 7 for(l<r;l++)if(cur- inq[l] <m)return q[l] ;}

     这个图片我希望能复制进去~

    肯定不行啊。。

    单调队列

    四,

    老老实实看来下代码,似乎是改了下 push(),以及把first改成了getmax()

    但是如果已经单调了,挺没有必要的。

  • 相关阅读:
    【数据结构】KMP算法
    【数据结构】银行问题
    ejs模板渲染页面
    node的知识点
    http搭建服务器
    http接收页面传递的数据
    http模块
    node的http模块
    node的fs模块
    base.css
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12040429.html
Copyright © 2011-2022 走看看