单调队列
板子
求区间最值
        while(!q1.empty() && q1.back().data>=a[i])q1.pop_back();
        //队列中的元素单调递增,如果当前元素比队尾元素大就无法保证单调性,应该弹出
        q1.push_back((element){a[i],i});//插入元素
    }
    for(int i=k;i<=n;++i){
        while(!q1.empty() && q1.back().data>=a[i])q1.pop_back();
        q1.push_back((element){a[i],i});
        while(!q1.empty() && i-q1.front().pos+1>k)q1.pop_front();
        //弹出过期元素
        printf("%d ",q1.front());
    }
例题 :滑动窗口,理想正方形
维护某个单调关系
例题:广告印刷,look up,广告印刷
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号