zoukankan      html  css  js  c++  java
  • 滑动窗口-洛谷T1866(单调队列)

    咕咕咕

    单调队列板子题

    一、基本

    1.单调队列:

    特殊的双端队列,内部元素。分为最大队列(单调递增)和最小队列(单调递减)两种

    二、应用

    本题中:大部分单调队列优化的动态规划问题都和定长连续子区间的最值问题

    #include<bits/stdc++.h>
    using namespace std;
    inline int read()
    {
        int sum = 0,p = 1;
        char ch = getchar();
        while(ch < '0' || ch > '9')
        {
            if(ch == '-')
                p = -1;
            ch = getchar();
        }
        while(ch >= '0' && ch <= '9')
        {
            (sum *= 10) += ch - '0';
            ch = getchar();
        }
        return sum * p;
    }
    
    const int N = 1e6 + 5;
    int n,k,head,tail;
    int a[N],fn[N],fx[N],num[N],q[N];
    
    void dpmin()
    {
        head = 1,tail = 0;
        for(int i = 1;i <= n;i++)
        {
            while(num[head] < i - k + 1 && head <= tail)
                head++;
            while(a[i] <= q[tail] && head <= tail)
                tail--;
            num[++tail] = i;
            q[tail] = a[i];
            fn[i] = q[head];
        }
    }
    
    void dpmax()
    {
        head = 1,tail = 0;
        for(int i = 1;i <= n;i++)
        {
            while(num[head] < i - k + 1 && head <= tail)
                head++;
            while(a[i] >= q[tail] && head <= tail)
                tail--;
            num[++tail] = i;
            q[tail] = a[i];
            fx[i] = q[head];
        }
    }
    
    int main()
    {
        n = read(),k = read();
        for(int i = 1;i <= n;i++)
            a[i] = read();
        dpmin();
        dpmax();
        for(int i = k;i <= n;i++)
            printf("%d ",fn[i]);
        printf("
    ");
        for(int i = k;i <= n;i++)
            printf("%d ",fx[i]);
        return 0;
    }
    裸题
  • 相关阅读:
    去掉谷歌浏览器下input框自动填充的背景色
    ajax请求中动态显示问题
    Array对象的方法有
    请求页面的方法
    IE浏览器checkbox的样式问题
    property、classmethod和staticmethod总结
    面向对象和类
    内置函数补充map、reduce和filter等
    python实现控制台的进度条功能
    python常见内置函数
  • 原文地址:https://www.cnblogs.com/darlingroot/p/11355781.html
Copyright © 2011-2022 走看看