King of Range 2024牛客国庆集训派对day3

news/2024/10/4 3:07:06 标签: 算法, C++

原题

King of Range

解析

m 的值不大, 每次时间在 n logn 以内即可

我们遍历整个数组, 以 i 为右边界, 检测是否有满足条件的左边界, 一次只加上左面的所有可能, 用两个双向队列维护两个单调栈, 一个存最大值, 一个存最小值, 这样可以帮助找到合适的左边界

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 200010;
int n, m, k, q, l, ans;
int a[N];
void solve2()
{
	deque<int> qmi, qmx;
	l = 0, ans = 0;
	for(int i = 1; i <= n; i ++ )
	{
		while (!qmx.empty() && a[qmx.front()] - a[i] > k)
		{
			l = max(l, qmx.front());
			qmx.pop_front();
		}
		
		while (!qmi.empty() && a[i] - a[qmi.front()] > k)
		{
			l = max(l, qmi.front());
			qmi.pop_front();
		}
		
		ans += l;
		while (!qmx.empty() && a[qmx.back()] <= a[i])
		{
			qmx.pop_back();
		}
		qmx.push_back(i);
		while (!qmi.empty() && a[qmi.back()] >= a[i])
		{
			qmi.pop_back();
		}
		qmi.push_back(i);
	}
	cout << ans << "\n";
}
void solve()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i ++ ) cin >> a[i];
	for (int i = 1; i <= m; i ++ )
	{
		cin >> k;
		solve2();
	}
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int T = 1;
	while (T -- )
	{
		solve();
	}
}


http://www.niftyadmin.cn/n/5689335.html

相关文章

基于51单片机的家用防火防盗控制系统设计

本设计基于51单片机的家用防火防盗控制系统&#xff0c;该系统通过模块间的协同作用实现了对烟雾与天然气浓度的监测、温度监测、人体红外监测、通信传输、声光报警等功能。利用按键模块设置报警的阈值&#xff0c;将处理后的信息与阈值进行对比。判断气体浓度和温度是否超过阈…

1516-函数指针

笔记&#xff1a; 函数指向或引用内存中的数据。 可以用指针用来存储函数的地址指向函数的指针。 说内存的时候&#xff0c;指的是程序运行的上下文。 随机存储器&#xff0c;RAM,称为主存。 应用程序的代码段&#xff0c;是用来存放可执行文件拷贝过来的机器码或者指令的…

Spring(学习笔记)

<context:annotation-config/>是 Spring 配置文件中的一个标签&#xff0c;用于开启注解配置功能。这个标签可以让 Spring 容器识别并处理使用注解定义的 bean。例如&#xff0c;可以使用 Autowired 注解自动装配 bean&#xff0c;或者使用 Component 注解将类标记为 bea…

ES索引生命周期管理

基于如何 定时删除ES索引过期数据 而引发的一系列关于ES索引生命周期管理ILM(Index Lifecycle Management)的学习 快速上手 &#xff1a;定时删除ES索引中的过期数据 1. ILM解决什么问题&#xff1f; ES从6.7版本引入ILM&#xff0c;通过ILM可以解决哪些问题呢? 自动新建…

【综合性渗透利器】- TscanPlus

如果你在寻找一款轻量级、实用且开源的漏洞扫描工具&#xff0c;那么 TscanPlus 绝对值得一试。这款工具由 TideSec 团队打造&#xff0c;以其简洁、高效、易用的特点&#xff0c;广受好评&#xff0c;目前在github上拥有1.5k star。 为什么推荐 TscanPlus&#xff1f; 无论你…

升级FreeBSD13.2到14.1-RELEASE后pkg安装软件报错:missing or size mismatch

升级FreeBSD13.2到14.1-RELEASE后pkg安装软件报错&#xff1a;missing or size mismatch 升级FreeBSD13.2到14.1-RELEASE后&#xff0c;升级软件包&#xff0c;用pkg upgrade的时候报错&#xff1a; missing or size mismatch&#xff0c;导致pkg无法升级。 后来发现安装新软…

Windows环境 源码编译 FFmpeg

记录一下windows环境纯代码编译ffmeg的过程&#xff01; 目录 一、安装MSYS2 1.下载安装 2.配置 3.修改源 4.测试与更新 二、安装其他必要工具 1.安装MinGW-w64 2.安装git 3..安装make等工具 4.编译前的其他准备工作 ①.重命名link.exe ②.下载和安装YASM ③.安装…

15分钟学 Python :编程工具 Idea 和 vscode 中配置 Python ( 补充 )

编程工具配置 Python 在 IDE 和 VSCode 中 在编程学习的过程中&#xff0c;选择合适的开发工具至关重要。本文将详细介绍在两种流行的IDE&#xff08;IntelliJ IDEA 和 Visual Studio Code&#xff09;中如何配置Python环境&#xff0c;帮助你更高效地进行Python开发。 一、编…