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

第三章:单调队列

1.P1886 滑动窗口 /【模板】单调队列 - 洛谷 

#include<iostream>
#include<deque>
using namespace std;

int n, m;
const int N = 1e6 + 10;
int a[N];

int main()
{
	cin >> n >> m;
	deque<int> q;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	//单调递增 - 最小值 - 存下标 
	for (int i = 1; i <= n; i++)
	{
		int t = a[i];
		while (q.size() && a[q.back()] >= t)q.pop_back();//小的放前面,t小就放前面,pop掉

		q.push_back(i);
		if (q.back() - q.front() + 1 > m)
		{
			q.pop_front();
		}
		if (i >= m)cout << a[q.front()]<<" ";
	}
	//单调递减 - 最大值 - 存下标
	q.clear();
	cout << endl;
	for (int i = 1; i <= n; i++)
	{
		int t = a[i];
		while (q.size() && a[q.back()] <= t)q.pop_back();

		q.push_back(i);
		if (q.back() - q.front() + 1 > m)
		{
			q.pop_front();
		}
		if (i >= m)
		cout << a[q.front()] << " ";
	}
	return 0;
}

以求最大值为例子:

如果当前a[i] >= a[q.back()],那么把比a[i]小的全部都出队列,然后推进去

如果 < 那就推进队尾

根据队头和队尾的下标判断是否超出m;

超了,出队头

打印队头为最大值

2.P2251 质量检测 - 洛谷 

#include<iostream>
#include<deque>
using namespace std;

int n, m;
const int N = 1e6 + 10;
int a[N];

int main()
{
	deque<int> q;
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
		while (q.size() && a[q.back()] >= a[i])q.pop_back();
		
		q.push_back(i);
		if (q.back() - q.front() + 1 > m)q.pop_front();
		if (i >= m)cout << a[q.front()]<<endl;
	}
	return 0;
}

 

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

相关文章:

  • Java中的JSONObject对象
  • DeepSeek-R1论文深度解析:纯强化学习如何引爆LLM推理革命?
  • LeetCode[454]四数相加Ⅱ
  • 近期学习资料,尚未整理
  • Wpf Avalonia-实现中英文切换工程
  • VAE,以及概率分布的各种知识点
  • 抓包工具:fiddler和wireshark对比
  • Python Django入门(创建其他网页)
  • PreparedStatement 和 Statement 从 功能、性能、安全性、适用场景 等维度详细对比分析
  • 架构师面试(十九):IM 架构
  • 某视频的解密下载
  • 地理信息科学(GIS)专业的就业出路与转型新方向,传统就业领域VS新兴技术赛道
  • docker模拟Dos_SYN Flood拒绝服务攻击 (Ubuntu20.04)
  • MyBatis 的一次缓存与二次缓存
  • 任务型多轮对话(二)| 意图识别
  • pta 乐子人游戏
  • 调用feapder作为子程序时setting.py文件不起作用
  • C++标准库新部件:解锁编程新姿势
  • win注册表提示没有权限进行修改的解决方式
  • (十)方法的定义 方法的作用域
  • 玩客云 armbian 安装mqtt服务端
  • 关于IPC sensor条纹问题分析
  • 在Kubernetes 1.26 上使用 StatefulSet 部署 MySQL8
  • 一文速通Python并行计算:00 并行计算的基本概念
  • 【论文笔记】生成对抗网络 GAN
  • 深入探究 JVM 堆的垃圾回收机制(二)— 回收
  • 【人工智能】Ollama 的 API 操作指南:打造个性化大模型服务
  • 《鸟哥的Linux私房菜基础篇》---5 vim 程序编辑器
  • 探秘文件系统变RAW:数据拯救全解析
  • 一道原创OI题(普及-)——ZCS的随机游走