当前位置: 首页 > 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;
}

http://www.dtcms.com/a/21082.html

相关文章:

  • 分享一个解梦 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源码
  • 【算法进阶详解 第一节】树状数组
  • 人工智能在文化遗产保护中的创新:科技与文化的完美融合
  • Redis离线安装
  • springboot项目如何部署到tomcat中
  • 深度学习算法:开启智能时代的钥匙
  • 前端为什么要使用new Promise包裹一个函数
  • 联合概率:定义、公式和示例
  • CRISPR spacers数据库;CRT和PILER-CR用于MAGs的spacers搜索
  • 强化学习-策略梯度算法
  • 复旦:LLM知识问答任务性能预测