单调队列模板

单调队列好久以前就学过,不过当时就没弄懂,粘了个板子就糊弄过去了。

现在想想,其实很简单,而且以前那个板子太丑太长了。

而且我讨厌手写队列啊啊(虽然知道STL依赖是不好的)。

我的板

 1 #define x first
 2 #define y second
 3 void mono_queue(int n,int k){
 4     typedef pair<int,int> P;
 5     deque<P>q;
 6     for(int i=1;i<=n;i++){
 7         int m=a[i];
 8         while(!q.empty()&&q.back().y<m)
 9         q.pop_back();
10         q.push_back(P(i,m));
11         if(q.front().x<=i-k)
12         q.pop_front();
13     }
14 }

 

posted @ 2017-08-29 09:46  orzzz  阅读(277)  评论(0编辑  收藏  举报