单调队列(滑动窗口)
Posted 20203246
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单调队列(滑动窗口)相关的知识,希望对你有一定的参考价值。
#include <iostream> using namespace std; using ll = long long; const int maxn=1e6+10; int n,k,a[maxn],q[maxn]; int main(){ ios::sync_with_stdio(false); cin>>n>>k; for(int i=0;i<n;i++)cin>>a[i]; int l=0,r=-1; for(int i=0;i<n;i++){ while(l<=r&&i-k+1>q[l])l++; while(l<=r&&a[q[r]]>=a[i])r--; q[++r]=i; if(i>=k-1)cout<<a[q[l]]<<" "; } cout<<endl; l=0,r=-1; for(int i=0;i<n;i++){ while(l<=r&&i-k+1>q[l])l++; while(l<=r&&a[q[r]]<=a[i])r--; q[++r]=i; if(i>=k-1)cout<<a[q[l]]<<" "; } }
以上是关于单调队列(滑动窗口)的主要内容,如果未能解决你的问题,请参考以下文章