• 滑动窗口(单调队列)


    模板题,维护一个单减队列和一个单增队列

    emmmmm……没啥说的

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int rd(){
        int x=0,fl=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')fl=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
        return fl*x;
    }
    int n,k,a[1001000],l,r;
    struct star{int v,id;}e[1000100];
    int main(){
        n=rd();k=rd();
        for(int i=1;i<=n;i++)
            a[i]=rd();
        l=1;r=0;
        for(int i=1;i<=n;i++){
            while(l<=r&&a[i]<=e[r].v)r--;
                e[++r].v=a[i];e[r].id=i;
            while(i-e[l].id+1>k)l++;
            if(i>=k)printf("%d ",e[l].v);
        }
        putchar('
    ');
        l=1;r=0;
        for(int i=1;i<=n;i++){
            while(l<=r&&a[i]>=e[r].v)r--;
            e[++r].v=a[i];e[r].id=i;
            while(i-e[l].id+1>k)l++;
            if(i>=k)printf("%d ",e[l].v);
        }
        return 0;
    }
  • 相关阅读:
    【原创】ZYNQ学习笔记(一) HelloWorld实现
    设置毛玻璃效果
    什么是UIImageView
    短信监听器
    内容观察者
    插入联系人
    UIFont
    什么是UILabel
    读取联系人案例
    利用内容提供者插入短信
  • 原文地址:https://www.cnblogs.com/2017noipak/p/7791903.html
Copyright © 2020-2023  润新知