zoukankan      html  css  js  c++  java
  • 【P1886】滑动窗口(单调队列→线段树→LCT)

    这个题很友好,我们可以分别进行简单难度,中等难度,恶心难度来做。然而智商没问题的话肯定是用单调队列来做。。。

    板子题,直接裸的单调队列就能过。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #define re register
    #define wc 0.0000000001
    using namespace std;
    int qmax[1000001],qmin[1000001],n,m,k,a[1000001],maxx[1000001],minn[1000001],num;
    int h1,t1,h2,t2;
    inline void smax(int x)
    {
        while(h1<=t1&&a[qmax[t1]]<=a[x])
        t1--;
        qmax[++t1]=x;
        while(qmax[h1]<=x-k)
        h1++;
        return;
    }
    inline void smin(int x)
    {
        while(h2<=t2&&a[qmin[t2]]>=a[x])
        t2--;
        qmin[++t2]=x;
        while(qmin[h2]<=x-k)
        h2++;
        return;
    }
    int main()
    {
        cin>>n>>k;
        for(re int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        h1=1,t1=0;h2=1,t2=0;
        for(re int i=1;i<=n;i++)
        {
            smax(i);
            smin(i);
            if(i>=k)
            {
                maxx[++num]=a[qmax[h1]];
                minn[num]=a[qmin[h2]];
            }
        }
        for(re int i=1;i<=num;i++)
        cout<<minn[i]<<" ";
        cout<<endl;
        for(re int i=1;i<=num;i++)
        cout<<maxx[i]<<" ";
        return 0;
    }
  • 相关阅读:
    FTP文件传输应用分析
    A*寻路算法
    Asp.net页面事件引发后台程序处理原理
    开发人员的基本原则(转)
    定位new表达式
    常量对象的动态分配和释放
    PostThreadMessage使用
    最美丽的数学公式
    仿函数
    CF1598EStaircases【计数】
  • 原文地址:https://www.cnblogs.com/victorique/p/8427001.html
Copyright © 2011-2022 走看看