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

 

相关文章:

  • 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注册表提示没有权限进行修改的解决方式
  • (十)方法的定义 方法的作用域
  • 司法服务保障西部陆海新通道建设,最高法专门发文
  • 铺就长三角南北“交通动脉”,乍嘉苏改高速扩建项目首桩入位
  • 迎接八方来客:全国多地“五一”假期党政机关大院停车场免费开放
  • 结婚这件事,年轻人到底怎么想的?
  • 住房和城乡建设部办公厅主任李晓龙已任部总工程师
  • “75后”袁达已任国家发改委秘书长