C++ 算法竞赛 题目解析:Intersection 交集(区间重叠长度)

【信息科学与工程学】计算机科学与自动化——第三百零五篇 计算机系统中的各类运算操作01 编号类型领域运算操作运算类型算法算法的详细设计及数学分析参数列表及参数的数值设计应用场景 (100+条)集合运算​1集合运算关系代数并集 (Union)集合运算归并排序去重合并两个集合,去除重复元素。时间复杂度 O(n+m),n,m为两集合大小。输入:集合A, B。输出:A∪B。数据集成、多表结果合并、去重后的全量数据提取。2集合运算关系代数交集 (Intersection)集合运算哈希交集找出同时属于两个集合的元素。平均时间复杂度 O(min(n,m)),最坏 O(n*m)。输入:集合A, B。输出:A∩ 阅读详情

1. 题目:Intersection 交集(区间重叠长度)

性能限制

内存: 128 MB,时间: 1 S

题目信息

在这里插入图片描述
在这里插入图片描述

输入输出样例

输入样例1
0 3 1 5
输出样例1
2
(区间 [0,3] 与 [1,5] 重叠部分为 [1,3],长度 2)

输入样例2
0 1 4 5
输出样例2
0
(区间 [0,1] 与 [4,5] 无重叠)

输入样例3
0 3 3 7
输出样例3
0
( [0,3] 与 [3,7] 仅在点 3 相交,长度为 0。)

数据范围与提示

在这里插入图片描述


2. 代码

标准版本(可读性好)

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

int main() {
    int L1, R1, L2, R2;
    cin >> L1 >> R1 >> L2 >> R2;

    int overlap_left = max(L1, L2);
    int overlap_right = min(R1, R2);
    int length = max(0, overlap_right - overlap_left);

    cout << length << endl;
}

极简版本(一行输出)

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

int main() {
    int L1, R1, L2, R2;
    cin >> L1 >> R1 >> L2 >> R2;
    cout << max(0, min(R1, R2) - max(L1, L2));
}

3. 解析

3.1 问题本质

给定两个闭区间 [L1, R1] 和 [L2, R2],求它们重叠部分的整数长度(或连续长度)。
通常定义长度为 右端点 - 左端点(若重叠部分退化为一个点,长度为 0)。

3.2 核心思路

两个区间的交集仍然是一个区间(可能为空),其左右端点由下式确定:

  • 交集左端点 = max(L1, L2)
  • 交集右端点 = min(R1, R2)

原因:
要同时属于两个区间,
左端点必须 >= 两个左端点中的较大者;
右端点必须 <= 两个右端点中的较小者。

若 max(L1, L2) >= min(R1, R2),即min(R1, R2)-max(L1, L2) <= 0,则交集为空,长度为 0;
否则长度为 min(R1, R2) - max(L1, L2)。

3.3 边界情况分析

  • 完全不相交:如 [0,1] 和 [4,5] → max=4, min=1 → 差为负 → 取 max(0, 负数) = 0。
  • 包含关系:如 [0,10] 和 [2,5] → max=2, min=5 → 长度 3。
  • 端点恰好相接:如 [0,3] 和 [3,7] → max=3, min=3 → 长度 0。常见题目中视为无重叠(点不算长度)。
  • 左端点相等:如 [2,5] 和 [2,8] → max=2, min=5 → 长度 3,正确。

3.4 极简公式的由来

利用 max(0, min(R1,R2) - max(L1,L2)) 可以一步得到非负长度。
当 min(R1,R2) - max(L1,L2) 为正数时即为重叠长度;为负数或零时,max(0, 值) 将输出 0。

3.5 复杂度分析

  • 时间复杂度:O(1),仅进行几次比较和加减运算。
  • 空间复杂度:O(1),只使用几个整型变量。

3.6 扩展思考

  1. 浮点数区间:若区间端点为浮点数,逻辑相同,但需考虑浮点精度。长度仍为 max(0, min(R1,R2) - max(L1,L2))。
  2. 开区间或半开区间:只需根据题意调整比较符号,如半开区间 [L, R) 则重叠长度为 max(0, min(R1,R2) - max(L1,L2)) 依然适用,因为端点重合时长度为 0。
  3. 求多个区间的共同交集:可依次取 max 和 min 迭代,最后若左>右则空。
  4. 区间合并:可基于排序后的区间进行合并,本题虽不涉及,但相关算法也常用 max 和 min。

3.7 常见错误

  • 忘记处理负数长度,直接输出 min(R1,R2) - max(L1,L2) 可能得到负值(应取与0的最大值)。
  • 混淆端点顺序,用了 min(L1,L2) 或 max(R1,R2) 等错误组合。
  • 未考虑整数溢出(本题在 int 范围内,但若数值极大可改用 long long)。

4. 总结

区间交集长度计算是基础算法,掌握 max / min 的方法后能快速解决。本题代码极短,但背后的数学逻辑清晰,适合作为初学者理解“区间运算”的入门题。

一句话记忆:左取大,右取小,差为正,就取差,差为负,就取零。

【信息科学与工程学】计算机科学与自动化——第三百零五篇 计算机系统中的各类运算操作02 编号类型领域运算操作运算类型算法算法的详细设计及数学分析参数列表及参数的数值设计应用场景301集合运算关系代数关系集合Feature Selection (Chi-Square)集合运算卡方检验目标函数:χ2=∑E(O−E)2​ 衡量分类特征与目标的相关性;资源:O(n·d);条件:离散特征,离散目标;组合约束:值越大相关性越强。 数据结构:列联表。 代码实现(C++): 特征列,目标列文本分类中的特征选择。302集合运算关系代数关系集合Feature Selection (ANOVA F 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第二十四篇 编译器10——编译原理与词法分析02

链接时优化:全局DCE(579)、LTO(580)安全编译:CFI(581、586)、ASan(582)、UBSan(583)、MSan(584)、TSan(585)、CET(587)、PAC(588)、MTE(589)、SFI(590)、Wasm沙箱(591)侧信道与秘密:侧信道缓解(592)、常量时间(593)、秘密清理(594)内存安全:ASLR(595)、栈保护(596)、整数溢出检测(597)、除零检测(598)、空指针检测(599)、数组边界检查(600)至此编号达到600。

weixin_49199313的博客 195

2023十四届蓝桥杯C++A组真题

蓝桥杯B组30多分进国赛了,觉得有的玩,再刷一刷算法把编程题目链接放下边,就不放题干了。

qq_63841467的博客 3836

[全民编程]76道高难度C++练习题.含NOI竞赛题.欢迎挑战

[全民编程]76道高难度C++练习题.含NOI竞赛题.值得一做,包含很多经典题目

蓝桥杯C/C++程序设计 往届真题汇总(进阶篇)

1. 最短路2. 数字三角形3. 递增序列4. 杨辉三角形5. 跳跃6. 路径7. 迷宫8. 装饰珠9. 明码10. 字串分值11. 作物杂交12. 承压计算13. 全球变暖14. 直线15. 平面切分

Bit_Dong的博客 5万+

c++的竞赛题目以及标准答案

我们学校c++竞赛的题目和标准答案,里边涉及诸多最基本最简单的问题,但是都有一定的技巧性,很适合初学者学习

STM32F103xx / STM32F429VET6最小系统原理图

心血来潮想试一下STM32F4系列和F1系列在编程上有什么差别,手头没有开发板,本着能勤俭节约的原则自己先做一块看看能不能成,看了一下STM32F429VET6的芯片在F429xx中最便宜,对照着数据手册绘制了原理图画了PCB,目前打板中,焊接完如果跑不通回来修改文章。这里我们可以看到,VDD是标准工作电压,VDDA是模拟工作电压,且VDDA必须与VDD等电位,VBAT是备份工作电压,一般接纽扣电池电源,如果存在VREF+引脚,则要求VDDA-VREF+ < 1.2V。截图下来比较糊,不知道为什么。

m0_51294753的博客 1万+

2023年厦门市小学生计算机C++语言竞赛--试卷(初赛)

答题时间:90分钟。

qq_39127687的博客 2468

【中兴交换机MC-LAG配置】

​ 中兴mc-lag配置 主设备配置如下: Keepalive链路 interface smartgroup1023 //用作MC-LAG的Keepalive链路接口 switch attribute disable yes description For_Keepalived exit interface xgei-0/1/1/47 switch attribute disable yes description For_Keepalived exit interface

qq_31440733的博客 1万+

c++竞赛题目

记录学习过程之学科竞赛类型题

weixin_65295461的博客 2544

Ubuntu20.04实时内核补丁PREEMPT_RT编译与安装全流程解析

本文详细解析了在Ubuntu20.04系统上编译与安装实时内核补丁PREEMPT_RT的全流程。从内核与补丁版本匹配、编译环境准备,到内核配置、编译排错,再到最终安装、验证与进阶优化,提供了手把手的实战指南,旨在帮助机器人、工业控制等对实时性有苛刻要求的开发者构建低延迟、高确定性的Linux系统。

weixin_29213827的博客 186

AutoCAD二次开发(.Net)之XData

对于CAD中的实体进行筛选等操作,常常会用到实体的XData属性,下面介绍一下实体的XData的增删改。 //XData的新增,修改跟新增一样,new一个ResultBuffer,赋值即可 Document doc=Application.DocumentManager.MdiActiveDocument; using (DocumentLock dl = doc.LockDocument()) { using (Transaction trans = doc.TransactionManager.S.

qq_21489689的博客 2593

【C++】2024天梯赛补题题解

C++写的2024年天梯赛题,当前代码可拿230分

细雪听时序的博客 4326

CVE-2021-3156本地提权漏洞复现

受影响版本 sudo: 1.8.2 - 1.8.31p2 sudo: 1.9.0 - 1.9.5p1 测试 我这里是在本地centos7上进行测试。 需要目标机器上存在python编译器、目标主机出网或者能上传文件到目标主机。 以非root用户登录系统,并运行如下命令: sudoedit -s / 通常响应一个以 sudoedit: / 开头的报错,多半存在漏洞。 利用 提权脚本: https://www.o2oxy.cn/wp-content/uploa

The current road is different, love needs to distinguish between right and wrong 3780

从蓝桥杯真题ALGO-492解析集合运算:双指针与哈希表实现对比

集合运算作为数据结构的基础操作,涉及并集、交集、差集等核心概念,其原理基于元素间的包含与排除关系。在算法与数据处理中,高效实现集合运算能显著提升程序性能,尤其在大规模数据比对、数据库查询优化及搜索引擎索引等场景下至关重要。本文聚焦蓝桥杯真题ALGO-492,通过对比暴力双循环、排序双指针及哈希表三种实现方案,深入剖析时间与空间复杂度的权衡。其中,排序双指针法以O(M log M + N log N)的复杂度平衡了效率与通用性,而哈希表法在元素值范围有限时可达线性时间复杂度。通过详解输入去重、边界条件处理及输

weixin_34290631的博客 342

【Proteus仿真】点亮小灯系列仿真——小灯闪烁/流水灯/交通灯

本文介绍了基于AT89C51单片机的LED控制案例,共包含5个实例:1)单个LED闪烁;2)共阳极流水灯;3)共阴极流水灯;4)花样流水灯;5)交通灯模拟。每个案例详细说明了电路原理图、接线方式和控制程序实现,其中重点讲解了PWM调光原理及其在LED控制中的应用。案例由简至繁,从基础I/O控制到复杂花样显示,最后实现交通灯逻辑控制,展示了单片机在LED控制中的典型应用方法。文中提供了完整的源代码,便于读者理解和实践。

XU157303764的博客 1883

迅投miniQMT量化交易实战指南:从入门到自动化交易系统构建

迅投miniQMT量化交易实战指南摘要 本文全面介绍迅投miniQMT量化交易系统的开发流程,重点包括: 环境配置:详细说明miniQMT极简模式的安装步骤,包括xtquant库获取、Python版本要求及验证方法 行情数据模块:解析xtdata模块的核心功能,包括: 获取板块分类与股票列表 查询合约基础信息 下载历史K线数据(支持tick、分钟、日线等周期) 交易执行模块:介绍xttrader模块的交易API,涵盖: 账户连接与初始化 订单管理(下单、撤单、查询) 持仓与资产查询 实战开发:提供可直接运行

huanghm88的专栏 667

算法题知识点总结与代码模板

一次整理总结

xxwl585的博客 237

领域知识图谱构建的技术流程

因此概念的属性定义十分重要,通常大部分知识库中的概念属性都是采用人工定义等方式生成的,通用知识图谱则可以从开放数据集中获取概念的属性,然后从在线百科中学习实体的属性,并对实体属性进行往上规约从而生成概念的属性。由于百科的分类体系都是经过了百科管理员或是高级编辑人员的校验,其分类系统中的数据可靠性非常高,因此从百科中抽取概念和实体,通常将标题作为实体的候选,而将百科中的分类系统直接作为概念的候选。为了对知识进行合理的组织,更好地描述知识本身与知识之间的关联,需要对知识图谱的模式进行良好的定义。

weixin_43961909的博客 334

AI视觉任务算法全景详解(全部任务类型与对应算法列表)

本文档全面梳理了计算机视觉领域的46类核心任务及600+主流算法,涵盖图像理解、目标检测、3D视觉、图像增强、生成编辑、视频处理等方向。内容包含每类任务的算法原理、演进脉络和工业选型建议,并附6个实用附录(选型速查表、骨干网络对比、数据集汇总等)。适用于算法工程师、视觉AI研究员和技术决策者进行技术调研和项目落地参考,技术栈覆盖深度学习框架与CUDA加速方案。文档采用系统化分类体系,提供从理论到实践的完整指导。

weixin_45590420的博客 443

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python深度学习:从入门到实战

亲爱的读者,欢迎您翻开这本书。我们即将探索的,是深度学习的宇宙——一个由数据、算法与算力构筑的奇妙世界。它既是严谨的科学,也是创造的艺术,更是一条通往未来智慧的修行之路。本书将带您从最基础的数学原理出发,亲手搭建神经网络,驾驭Transformer等前沿模型,最终将智慧转化为现实世界的价值。请放下畏惧,保持好奇。这不仅是一次知识的学习,更是一场思维的远行。来,随我一起,开启这趟非凡的旅程吧。

weixin_45747731的博客 296

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: C++ 算法竞赛 题目解析:Integer Division Returns 整数除法返回值
下一篇: Mermaid极简教程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值