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

落谷P1886 滑动窗口~

时间:2019-10-02 10:42:52      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:cstring   isp   while   img   区间   space   滑动窗口   优先   none   

很好用的线性求变换区间最值的方法,比线段树快

用到了优先队列的算法

据说能用STL双向队列解但我不会QAQ

技术图片
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int n,k;
int ans,l,r,a,b;
int num[1000007];
int q[1000007],q2[1000007];
int p[1000007];
void maxl(){
    //max
    int head=1;
    int tail=0;
    for(int i=1;i<=n;i++)
    {
        while(head<=tail&&q[tail]<=num[i])
            tail--;
        q[++tail]=num[i];
        p[tail]=i;
        while(p[head]<=i-k)
            head++;
        if(i>=k) printf("%d ",q[head]);
    }
    cout<<endl;
}
void minl(){
    //min
    int head=1;
    int tail=0;
    for(int i=1;i<=n;i++)
    {
        while(head<=tail&&q[tail]>=num[i])
            tail--;
        q[++tail]=num[i];
        p[tail]=i;
        while(p[head]<=i-k)
        head++;
        if(i>=k) printf("%d ",q[head]);
    }
    cout<<endl;
}
int main()
{
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
        scanf("%d",&num[i]);
    minl();
    maxl();
    return 0;
 } 
滑动窗口

 

落谷P1886 滑动窗口~

标签:cstring   isp   while   img   区间   space   滑动窗口   优先   none   

原文地址:https://www.cnblogs.com/xwx2354672579/p/11616819.html

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