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

E - Sparse Range 题解

image

image

豆包翻译。

简单来说: 给定整数数组a和整数d,统计数组中所有满足以下条件的连续子数组的数量:
子数组中任意两个元素的差的绝对值都大于等于d。

数组长度 n 的范围:1 ≤ n ≤ 4 × 10^5 整数 d 的范围:1 ≤ d ≤ 10^9

最朴素的想法,我们o(n^2 )枚举左右端点,然后o(n)判断,显然o(n^3)超时。

如何优化? -> 滑动窗口+set维护。
固定左端点 L,尽可能向右扩展 R 直到窗口不满足条件,确保找到最远的合法边界。

对于每个 L,以 L 为左端点的合法子数组数量为 R-L,累加得到总数。

注意到我们R指针是不会回退的,因为满足单调性。

具体地,当我们区间[L,R]判断完毕后,我们移动L,[L+1,R]必然合法,因为判断条件变少,我们的目的是让R尽可能大,即从R+1开始,不用回退。
这个性质让我们的时间复杂度大大降低。

于是我们想想怎么判断区间是否合法。

显然用set.

每次我们拓展右端点,只需比较原来set中的前驱和后继。为什么? 因为我们只关心与新插入的元素相邻的位置即可,若满足,则该区间必然合法。

思路变得愈发清晰。

万事具备,只欠代码~

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int main(){int n,d;cin >> n >> d;vector<int>a(n);for(auto&x:a)cin >> x;ll ans=0;set<ll>s({(ll)-1e9,(ll)2e9});int r=0;for(int l=0;l<n;l++){while(r<n){auto it=s.lower_bound(a[r]);      if(*it-a[r]<d)break;it--;if(a[r]-*it<d)break;s.insert(a[r]);r++;}ans+=r-l;s.erase(a[l]); 	}cout << ans << endl;
}   来自ATCODER题解代码

谢谢观看。

http://www.jsqmd.com/news/356140/

相关文章:

  • Python先进技术全面发展核电站发电多样化研究开发重要性智能化系统化武器多样化太阳能利用回收利用可再生
  • Python BytesIO:用内存字节流替代临时文件
  • 基于Spring Boot的企业数据资产登记系统
  • 【主动噪声控制】基于直观的循环卷积惩罚因子的频域输出约束型主动噪声控制算法附Matlab代码
  • ..
  • 设计支持手势识别的实时引擎
  • Python超级超大型号核动力+微波激光加热棒发动机研究开发重要性智能化系统化武器多样化太阳能利用回收利用可再生能源
  • 阿里云平台公网连接 - f
  • 详细介绍:iBiz开源:iBizPLM BOM插件来了
  • python超级超大型号无人救援智能化核动力飞机研究开发重要性智能化系统化武器多样化太阳能利用回收利用可再生能源
  • 【状态估计】【KF、DKF、SMDKF 、CI 、ICF、HCMCI】离散时间线性系统的基于共识的分布式滤波器的稳定性与最优性分析附Matlab代码
  • 如梦令雪后
  • python超级超大型号无人水下探测器智能化研究开发重要性智能化系统化武器多样化太阳能利用回收利用可再生能源
  • 【状态估计】 KEWLS和 KEWLS-KF (KKF) 研究附Matlab代码
  • 自建远程协助软件rustdesk实现远程桌面远程控制软件
  • 深圳本凡科技专业企业APP开发,助力手机应用创新优化
  • 【节点】[CustomDepthBuffer节点]原理解析与实际应用
  • 2026第十届中国(义乌)国际五金电器博览会影响力如何?商机在哪里?
  • 【Linux进阶篇】从基础到实战:grep高亮、sed流编辑、awk分析,全场景覆盖
  • 【Linux进阶篇】Linux后台运行避坑指南:nohup、 用法及Systemd守护进程实操
  • wsl中遵循win的代理设置
  • 【开源商城常见的安全漏洞】
  • 【Linux入门篇】Ubuntu和CentOS包管理不一样?apt与yum对比实操,看完再也不混淆
  • 二次比二次型求最值
  • 【选择开源商城系统的风险】
  • 知识库投喂:如何构建与优化AI的核心大脑
  • blazor中 @bind 和 @bind-value 有什么区别
  • python并行编程:使用 joblib / threadpoolctl 实现后端线程数可控的并行化科学计算编程 —— 实现不同线程池下的numpy矩阵计算
  • 量子计算与人工智能:未来科技的双重引擎,如何推动便捷的技术革新
  • P3131 [USACO16JAN] Subsequences Summing to Sevens S