• 滑动窗口-洛谷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;
    }
    裸题
  • 相关阅读:
    GDB常用命令
    codevs1743
    Codeforces Round #369 (Div. 2)E
    Codeforces Round #200 (Div. 2)E
    2016 Multi-University Training Contest 4 T9
    2016 Multi-University Training Contest 1 T3
    2016 Multi-University Training Contest 1 T4
    HDU 5448 Marisa’s Cake
    codeforces 467C George and Job dp
    poj 1704 Georgia and Bob 博弈
  • 原文地址:https://www.cnblogs.com/darlingroot/p/11355781.html
Copyright © 2020-2023  润新知