--------------------------

题目链接:Miku

--------------------------

看一看这道题,我们很容易会发现采用模拟+遍历的方法会TLE

这时,我们就要采用这样一个东西了——单调队列(其实这也就是个单调队列模板)

---------------------------

单调队列,顾名思义,我们在使用时这个队列是有一定顺序(单调)的,并且它有一个特点,你的队列的极值一定在队首,知道这些,我们接可以做题了

---------------------------

单调队列是从队尾插入,而队首,队尾都会删除的双端队列。以该题为例,我们首先需要一个降序的单调队列,但是怎么实现呢?

假设此时队列为1,2,6,我们我们要插入一个4,显而易见,只要我们把4插进去,6就不可能是最小值了(反之就有可能),所以为了维护队列单调性,我们需要把6删除

    while(!q1.empty()&&q1.back()>=now)//注意,一定要把判断是否为空放在前面 
        {
            q1.pop_back();
            q2.pop_back();//弹出 
        }
example

相关文章:

  • 2021-09-17
  • 2021-12-05
  • 2021-02-21
  • 2021-12-30
  • 2021-08-11
  • 2021-09-03
  • 2021-09-10
  • 2022-12-23
猜你喜欢
  • 2021-06-04
  • 2022-12-23
  • 2021-11-17
  • 2021-12-08
  • 2021-09-28
  • 2021-09-29
相关资源
相似解决方案