单调队列模板
单调队列好久以前就学过,不过当时就没弄懂,粘了个板子就糊弄过去了。
现在想想,其实很简单,而且以前那个板子太丑太长了。
而且我讨厌手写队列啊啊(虽然知道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 }