码迷,mamicode.com
首页 > 其他好文 > 详细

#(单调队列优化)P1886 滑动窗口(普及+/提高-)

时间:2019-10-05 22:16:55      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:comment   ref   define   href   max   namespace   head   nbsp   def   

https://www.jianshu.com/p/0bf8d8f1e450

https://blog.csdn.net/qq_42754826/article/details/89052630

#include<cstdio>
#define N 1000020
using namespace std;
int n,k;
int a[N];
struct monotone_queue{
int q[N],p[N];
int head,tail;

}minq,maxq;
void min_query()
{
minq.head=1;
minq.tail=0;
for(int i=1;i<=n;i++)
{
while(minq.head<=minq.tail&&minq.q[minq.tail]>=a[i]) minq.tail--;
minq.q[++minq.tail]=a[i];
minq.p[minq.tail]=i;
while(minq.head<=minq.tail&&minq.p[minq.head]<=i-k) minq.head++;
if(i>=k)printf("%d ",minq.q[minq.head]);
}
printf("\n");

}
void max_query()
{
maxq.head=1;
maxq.tail=0;
for(int i=1;i<=n;i++)
{
while(maxq.head<=maxq.tail&&maxq.q[maxq.tail]<=a[i]) maxq.tail--;
maxq.q[++maxq.tail]=a[i];
maxq.p[maxq.tail]=i;
while(maxq.head<=maxq.tail&&maxq.p[maxq.head]<=i-k) maxq.head++;
if(i>=k)printf("%d ",maxq.q[maxq.head]);

}

}
int main()
{
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
min_query();
max_query();
return 0;
}

 

#(单调队列优化)P1886 滑动窗口(普及+/提高-)

标签:comment   ref   define   href   max   namespace   head   nbsp   def   

原文地址:https://www.cnblogs.com/little-cute-hjr/p/11625778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!