zoukankan      html  css  js  c++  java
  • 【每日一题】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
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    MySQL数据库命令行界面不支持中文
    mysqldump使用方法(MySQL数据库的备份与恢复)
    MySQL性能测试初试(1)--sysbench
    composer安装
    Java关键字[static].md
    Docker容器
    Docker概述及安装
    Docker镜像
    定时任务[crontab]
    Linux下的curl工具
  • 原文地址:https://www.cnblogs.com/RioTian/p/14634528.html
Copyright © 2011-2022 走看看