当前位置: 首页 > news >正文

滑动窗口——优先队列写法

P1886 滑动窗口 /【模板】单调队列

思路:

记录两个元素分别是元素值元素下标

因为元素下标不会过期, 所以可以用STL优先队列(priority_queue)。

分为一个升序的优先队列,降序的优先队列,每次看队首如果过期了就删掉,否则答案就是队首。

优先队列传送门

【原创】优先队列 priority_queue 详解-CSDN博客

代码:

#include <bits/stdc++.h>
using namespace std;
struct Windows{
    int x, id;
    bool operator < (const Windows &T) const { return x < T.x; }
    bool operator > (const Windows &T) const { return x > T.x; }
};
int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    int n, k;
    cin >> n >> k;
    priority_queue<Windows> Q; // 最大
    priority_queue<Windows, vector<Windows>, greater<Windows>> Qless; // 最小
    vector<Windows> A(n);
    for (int i = 0; i < n; i++) cin >> A[i].x, A[i].id = i;
    for (int i = 0; i < n; i++) {
        Qless.push(A[i]);
        while(Qless.top().id <= i - k) Qless.pop(); // 过期
        if (i >= k - 1) cout << Qless.top().x << ' ';  
    }
    cout << '\n';
    for (int i = 0; i < n; i++) {
        Q.push(A[i]);
        while(Q.top().id <= i - k) Q.pop(); // 过期 
        if (i >= k - 1) cout << Q.top().x << ' ';
    }
    return 0;
}

相关文章:

  • 分享一个解梦 Chrome 扩展 —— 周公 AI 解梦
  • sql盲注脚本
  • 【数据结构入门 65 题】目录
  • 字符串(典型算法思想)—— OJ例题算法解析思路
  • Anaconda3 介绍和安装
  • 静默安装OGG for MySQL微服务版本,高效开展数据同步和迁移
  • FreeRTOS第5篇:事件的“广播站”——事件组与事件标志
  • 2025寒假天梯赛训练5
  • 如何通过 prometheus-operator 实现服务发现
  • Serverless(无服务器架构)和 FaaS(函数即服务)是什么?全方位解析
  • 搭建一个经典的LeNet5神经网络
  • Ubuntu安装docker:docker-desktop : 依赖: docker-ce-cli 但无法安装它、无法定位软件包 docker-ce-cli
  • (arxiv2411) CARE Transformer
  • 【每日德语】Ich bin müde 我累了
  • python的两种单例模式
  • 深度剖析 NVIDIA Isaac Sim:重塑机器人开发的创新引擎
  • 跟着 Lua 5.1 官方参考文档学习 Lua (1)
  • 力扣 最长递增子序列
  • 149,[4] BUUCTF WEB [GYCTF2020]FlaskApp(不会)
  • 再谈SpringCloud Gateway源码
  • 前四月全国铁路完成固定资产投资1947亿元,同比增长5.3%
  • 深圳市政协原副主席王幼鹏被“双开”
  • 19个剧团15台演出,上海民营院团尝试文旅融合新探索
  • “爱鸟周”为何不能像FI和花展那样“市区联动”
  • 比特币价格时隔三个月再度站上10万美元
  • 泉州一家婚介机构广告牌越南新娘七天闪婚领证?市监部门介入