算法学习05:离散化、区间合并
算法学习05:离散化、区间合并
文章目录
- 算法学习05:离散化、区间合并
- 前言
- 需要记忆的模版:
- 一、离散化
- 1.例题:离散化 + 区间和:
- 拓展:
- 二、区间合并(贪心)
- 1.例题:
- 总结
前言

需要记忆的模版:
vector<int> alls;//存储所有待离散化的值
sort(alls.begin(), alls.end());//将所有值排序
//去除重复的元素,并且不重复的元素 有序 的排在前面
alls.erase(unique(alls.begin(), alls.end()), alls.end()); //找到有序的排在前面的 坐标 所对应的 索引
//返回 坐标 所对应的 映射
int find(int x)
{int l = 0, r = alls.size() - 1;while(l < r){int mid = (l + r) >> 1;if(alls[mid] >= x) r = mid;else l = mid + 1;}return r + 1;//索引从0开始,映射后从1开始 } //区间合并:
void merge(vector<PII> &segs)
{vector<PII> res;//按照 区间左端点 排序 sort(segs.begin(), segs.end());int st = -2e9, ed = -2e9;//for(auto seg : segs){if(ed < seg.first){//一个区间已经合并完了 if(st != -2e9) res.push_back({st, ed});st = seg.first, ed = seg.second;//更新 }else ed = max(ed, seg.second());//判断 ed 是否要更新 }//注意:无论是那种情况到最后,都还剩下一个 区间 没有加入到res中 if(st != -2e9) res.push_back({st, ed}); segs = res;
}
提示:以下是本篇文章正文内容:
一、离散化
1.例题:离散化 + 区间和:
例题:求区间和,区间长度无限长(无限长的数轴)
具体题目:假定有一个无限长的数轴,数轴上的每个坐标都是0,我们首先进行n次操作,每次操作将某一位置x上的数加c。
接下来进行m次询问,每次询问包含 l 和 r ,求区间[l,r]间所有数的和。


int main()
{cin >> n >> m;//插入n次数操作 --------- 先将数据存储起来 for(int i = 0; i < n; i ++){int x, c;cin >> x >> c;add.push_back({x, c});alls.push_back(x);//存储所有待 离散化 的值 }//执行m次询问 --------- 先将数据存储起来 for(int i = 0; i < m; i ++){int l, r;cin >> l >> r;query.push_back({l, r});alls.push_back(l);//存坐标 alls.push_back(r);//存坐标 }//***关键*** sort(alls.begin(), alls.end());//将所有值排序 alls.erase(unique(alls.begin(), alls.end()), alls.end()); //去除重复的元素,并且不重复的元素 有序 的排在前面 //注意:现在我们已经将 坐标 离散化了,而且 输入的数据 也已经存储好了。//接下来,我们就要使用 “前缀和” 来求解 “区间和”//原数组 for(auto item : add){int x = find(item.first);a[x] += item.second;}//前缀和数组 for(int i = 1; i <= alls.size(); i ++) s[i] = a[i] + s[i - 1];//处理询问:for(auto item : query){int l = find(query.first()), r = find(query.second());cout << s[r] - s[l - 1] << endl;} return 0;}
拓展:

//------ 拓展 ---------//注意: vector<int> :: iterator 与 return a.begin() + j;//迭代器 与 索引的关系?不清楚。 vector<int> :: iterator unique(vector<int> &a){int j = 0;for(int i = 0; i < a.size(); i ++) if(!i && a[i] != a[i - 1]) a[j ++] = a[i];return a.begin() + j;}
二、区间合并(贪心)
1.例题:
例题:给n个区间,合并有交集的区间,求最后剩下的区间个数。
具体题目:给定n个区间[l i, r i],要求合并所有有交集的区间,(注意:如果在端点出相交,也算有交集),最后输出合并完成后的区间个数。


#include <iostream>
#include <vector>
#include <algorithm>using namespace std;typedef pair<int , int> PII;const int N = 100000 + 10;int n;
vector<PII> segs;//存储合并完后的区间void merge(vector<PII> &segs)
{vector<PII> res;//按照 区间左端点 排序 sort(segs.begin(), segs.end());int st = -2e9, ed = -2e9;//for(auto seg : segs){if(ed < seg.first){if(st != -2e9) res.push_back({st, ed});//一个区间已经合并完了 st = seg.first, ed = seg.second;//更新 }else ed = max(ed, seg.second());//判断 ed 是否要更新 }//注意:无论是那种情况到最后,都还剩下一个 区间 没有加入到res中 if(st != -2e9) res.push_back({st, ed}); segs = res;
}int main()
{cin >> n;for(int i = 0; i < n; i ++){int l, r;cin >> l >> r;segs.push_back({l, r});}merge(segs);cout << segs.size() << endl;return 0;}
总结
提示:这里对文章进行总结:
💕💕💕
相关文章:
算法学习05:离散化、区间合并
算法学习05:离散化、区间合并 文章目录 算法学习05:离散化、区间合并前言需要记忆的模版:一、离散化1.例题:离散化 区间和:拓展: 二、区间合并(贪心)1.例题: 总结 前言 需要记忆的模…...
内部审计2.0时代:数字化工具和方法全面升级
文章目录 一、内部审计的发展阶段二、内部审计的逻辑架构三、内部审计数字化转型面临的问题(1)缺少内部审计数字化转型规划和方案(2)非结构化数据的采集和后续利用不足(3)依赖编程或使用新工具的数据分析能…...
五子棋小游戏(sut实验报告)
实验目的 实现人与人或人与电脑进行五子棋对弈 实验内容 启动游戏,显示游戏参数设置界面,用户输入参数后进入游戏界面,显示棋盘及双方博弈过程,游戏过程中可选择退出游戏。判定一方获胜后结束本局游戏,可选择继续下…...
图像超分辨率算法ESRGAN原理及应用
前言 图像超分辨率算法是一种用于增加图像分辨率的算法,与传统的图像缩放算法不同的是,超分算法在放大图像的同时根据原图纹理生成更多细节,确保图像在放大后仍然有清晰的纹理细节。 一、模型简介 1、模型开源地址 GitHub - xinntao/ESRGAN: ECCV18 Workshops - Enhance…...
excel 动态列导出
excel动态列,只好用poi来写了,也并不复杂,一样就这个件事情抽像为几步,就是套路了,开发效率就上去了。 1 准备空模板 导出操作与excel模板的导出一样,可以参考excel导出标准化 2 自定义SheetWriteHandler …...
Java零基础入门到精通_Day 1
01 Java 语言发展史 Java语言是美国Sun公司(StanfordUniversity Network)在1995年推出的 计算机语言Java之父:詹姆斯高斯林(ames Gosling) 重要的版本过度: 2004年 Java 5.0 2014年 Java 8.0 2018年 9月 Java 11.0 (目前所使用的) 02 J…...
Spring Cloud集成nacos配置中心
1.添加Nacos Config依赖 打开nacos-config-demo的pom.xml文件并添加以下两个依赖项 项目的配置文件中通常包括数据库连接配置项、日志输出配置项、Redis连接配置项、服务注册配置项等内容,如spring-cloud-alibaba-nacos-config-base-demo项目中就包含数据库连接配置…...
【AI视频教程】只需5步,AI作出鸡你太美视频
1.视频效果 2.准备工作 制作视频效果,需要准备下面3个条件: 准备stable diffusion的环境剪辑一段【鸡你太美】原版视频stable diffusion安装sd-webui-IS-NET-pro插件 2.1部署stable diffusion环境 这里还是建议大家用云平台部署stable diffusion&am…...
C# OpenCvSharp DNN FreeYOLO 密集行人检测
目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN FreeYOLO 密集行人检测 效果 模型信息 Inputs ------------------------- name:input tensor:Float[1, 3, 192, 320] --------------------------------------------------------------- …...
一次HW红初面试
一、描述外网打点的流程? 靶标确认、信息收集、漏洞探测、漏洞利用、权限获取。最终的目的是获取靶标的系统权限/关键数据。 在这个过程中,信息收集最为重要。掌握靶标情报越多,后续就会有更多的攻击方式去打点。比如:钓鱼邮件、…...
网络攻防中nginx安全配置,让木马上传后不能执行、让木马执行后看不到非网站目录文件、命令执行后权限不能过高
网络攻防中nginx安全配置,让木马上传后不能执行、让木马执行后看不到非网站目录文件、命令执行后权限不能过高。 0x01 Nginx介绍 nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。nginx一般是把请求发…...
ctfshow web入门 php特性 web146-web150
1.web146 :被过滤了,三元运算符用不了,还可以用位运算符,逻辑运算符,等,逻辑运算符要注意或运算符的短路性 eval(return 1|phpinfo()|1) eval(return 1phpinfo()|1) payload: v11&v20&v3(~%8C%86%8C%8B%9A%92…...
Linux:kubernetes(k8s)prestop事件的使用(10)
他的作用是在结束pod容器之后进行的操作 apiVersion: v1 # api文档版本 kind: Pod # 资源对象类型 metadata: # pod相关的元数据,用于描述pod的数据name: nginx-po # pod名称labels: # pod的标签type: app #这个是随便写的 自定义的标签version: 1.0.0 #这个…...
vue2【详解】生命周期(含父子组件的生命周期顺序)
1——beforeCreate:在内存中创建出vue实例,数据观测 (data observer) 和 event/watcher 事件配置还没调用(data 和 methods 属性还没初始化) 【执行数据观测 (data observer) 和 event/watcher 事件配置】 2——created…...
C++基础语法和概念
基本语法和数据类型 C 是一种高性能的编程语言,允许程序员对内存管理进行精细控制。了解 C 的基本语法和数据类型是学习这门语言的第一步。以下是一些基础概念的详细介绍: 基本语法 程序结构 一个基础的 C 程序通常包括一个或多个头文件引用、一个 m…...
Vue.js+SpringBoot开发海南旅游景点推荐系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四、核心代码4.1 随机景点推荐4.2 景点评价4.3 协同推荐算法4.4 网站登录4.5 查询景点美食 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的海南旅游推荐系统ÿ…...
mysql笔记:11. 性能优化
文章目录 概览查询速度优化1. 分析查询语句1.1 EXPLAIN1.2 DESCRIBE 2. 使用索引优化查询3. 优化子查询 数据库结构优化1. 分解表2. 建立中间表3. 增加冗余字段4. 优化插入速度4.1. MyISAM引擎表4.2. InnoDB引擎表 5. 分析表、检查表和优化表5.1. 分析表5.2. 检查表5.3. 优化表…...
基于Docker搭建Maven私服仓库(Linux)详细教程
文章目录 1. 下载镜像并启动容器2. 配置Nexus3. 配置本地Maven仓库 1. 下载镜像并启动容器 下载Nexus3镜像 docker pull sonatype/nexus3查看Nexus3镜像是否下载成功 docker images创建Nexus3的挂载文件夹 mkdir /usr/local/nexus-data && chown -R 200 /usr/local…...
IPSEC VPPN 实验
背景:FW1和FW2为双机热备 要求:在FW5和FW3之间建立一条IPSEC通道,保证10.0.2.0/24网段可以正常访问到192.168.1.0/24IPSEC VPPN实验配置 fw2配置 加密数据流 新建对应IKE...
基于单片机的视觉导航小车设计
目 录 摘 要 I Abstract II 引 言 1 1 总体方案设计 3 1.1 方案论证 3 1.2 项目总体设计 3 2 项目硬件设计 4 2.1 主控模块设计 4 2.1.1单片机选型 4 2.1.2 STM32F103RCT6芯片 4 2.2单片机最小系统电路 5 2.3电机驱动模块设计 7 2.4红外模块设计 8 2.5红外遥控模块设计 9 2.6超…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
