• 【每日一题】4.滑动窗口 (单调队列问题)


    补题链接:Here

    这道题基本就是单调队列模板,不过直接看过去双指针(滑动窗口也是可以的)

    每次先把已经超过范围的扔掉,然后把范围内不可能成为最优解的扔掉,然后入队。

    // Murabito-B 21/04/08
    #include <bits/stdc++.h>
    using ll = long long;
    using namespace std;
    const int N = 1e6 + 10;
    int A[N], d[N];
    int main() {
        ios_base::sync_with_stdio(false), cin.tie(0);
        int n, k;
        cin >> n >> k;
        for (int i = 1; i <= n; ++i) cin >> A[i];
        int l = 0, r = 1;
        d[0] = 1;
        for (int i = 2; i <= n; ++i) {
            if (i - d[l] >= k && (l < r)) l++;
            while (r > l && A[d[r - 1]] >= A[i]) r--;
            d[r++] = i;
            if (i >= k) cout << A[d[l]] << " ";
        }
        cout << endl;
        l = 0, r = 1;
        d[0] = 1;
        for (int i = 2; i <= n; ++i) {
            if (i - d[l] >= k && (l < r)) l++;
            while (r > l && A[d[r - 1]] <= A[i]) r--;
            d[r++] = i;
            if (i >= k) cout << A[d[l]] << " ";
        }
        return 0;
    }
    

    The desire of his soul is the prophecy of his fate
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    Windows 10 PC 安装 Docker CE
    macOS 安装 Docker
    CentOS 安装 Docker CE
    Debian安装Docker
    ubuntu安装Docker
    docker基本概念
    linux docket
    Express框架
    Koa1 框架
    2018年03月刷题学习日记
  • 原文地址:https://www.cnblogs.com/RioTian/p/14634528.html
Copyright © 2020-2023  润新知