算法基础学习笔记——⑤离散化\区间和并

news2025/1/19 3:27:33

博主:命运之光
专栏:算法基础学习

目录

✨简述

特指整数离散化

🍓离散化模板:

✨区间和并

🍓区间和并模板:


前言:算法学习笔记记录日常分享,需要的看哈O(∩_∩)O,感谢大家的支持!


 ✨简述

离散化是一种辅助解决问题的操作,当问题中涉及的数据范围非常大,但是实际使用到的数据是比较少的。并且问题的求解是和它范围里的其它数据有关系的,那么可以将这些可能使用到的数据放到一起,排序去重,就将它们映射到了一个新的较小的范围里。

例如,下面几个数是在(−∞,∞)范围里的,实际用到的数:

6 、 − 10000 、 114514 、 1919 、 − 123 、 1919

排序之后变成:

− 10000 、 − 123 、 6 、 1919 、 1919 、 114514

去重之后变成:

− 10000 、 − 123 、 6 、 1919 、 114514

它在数组中的下标即可对应于一种离散化结果:

0 、 1 、 2 、 3 、 4

在有些问题(比如下面涉及前缀和操作的问题)里,需要下标从1开始,所以离散化结果也常常用从1开始的:

1 、 2 、 3 、 4 、 5

特指整数离散化

🍓离散化模板:

vector<int> alls; // 存储所有待离散化的值
sort(alls.begin(), alls.end()); // 将所有值排序
alls.erase(unique(alls.begin(), alls.end()), alls.end()); // 去掉重复元素
// 二分求出x对应的离散化的值
int find(int x) // 找到第一个大于等于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; // 映射到1, 2, ...n
}

✨区间和并

很多区间如果有交集就把它们合并为一个区间

🍓区间和并模板:

// 将所有存在交集的区间合并
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);
     if (st != -2e9) res.push_back({st, ed});
     segs = res;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/576055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【树上差分+LCA】篮球杯 砍树

省赛的题现在来补 感觉什么都不会&#xff0c;已经要没了 题意&#xff1a; 思路&#xff1a; 考虑一条边&#xff0c;两端有两棵子树 有这样的性质&#xff1a; 这条边两端的结点的经过次数M 因此每加一个点对&#xff0c;都对其路径1 s[u]M时&#xff0c;与该点连着的…

大数据Doris(二十八):Broker Load通配符导入HDFS数据并指定列顺序

文章目录 Broker Load通配符导入HDFS数据并指定列顺序 一、创建Doris表 2、准备HDFS数据

Maven学习笔记(基础篇)22版

1. 概述部分 1. 什么是 Maven&#xff1f; 为什么要学习Maven&#xff1f; 管理规模庞大的 jar 包&#xff0c;需要专门工具。脱离 IDE 环境执行构建操作&#xff0c;需要专门工具。 1、构建 Java 项目开发过程中&#xff0c;构建指的是使用『原材料生产产品』的过程。 原…

二叉树的镜像 JZ27

目录 链接 描述 示例 代码 演示结果 链接 二叉树的镜像_牛客题霸_牛客网 描述 示例 代码 /*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/ class Solution …

花朵识别系统Python实现,深度学习卷积神经网络算法

一、背景 花朵识别系统&#xff0c;基于Python实现&#xff0c;深度学习卷积神经网络&#xff0c;通过TensorFlow搭建卷积神经网络算法模型&#xff0c;并对数据集进行训练最后得到训练好的模型文件&#xff0c;并基于Django搭建可视化操作平台。 在当今信息化社会&#xff0c…

算法基础学习笔记——⑥链表\栈\队列

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法基础学习 目录 ✨单链表 &#x1f353;单链表模板&#xff1a; ✨双链表 &#x1f353;双链表模板&#xff1a; &#x1f353;循环链表图&#xff1a; ✨栈 &#x1f353;栈模板&#xff1a; ✨队列 &#x1f353;队…

【脚本工具】SVG路径中的A指令转DXF的圆弧和椭圆弧 C++代码实现

文章目录 一、SVG路径的A指令的语法说明二、DXF中的圆弧和椭圆弧对象2.1 圆弧对象2.2 椭圆弧对象 三、转DXF圆弧3.1 数学公式3.2 代码实现3.3 转换效果展示 四、转DXF椭圆弧4.1 数学公式4.2 代码实现4.3 转换效果展示 一、SVG路径的A指令的语法说明 目前Svg的Arc的参数字符串如…

leetcode--分隔链表(java)

分割链表 leetcode 86 分割链表 &#xff08;中等&#xff09;解题思路&#xff1a;链表专题 leetcode 86 分割链表 &#xff08;中等&#xff09; leetcode 86 分割链表 原题链接&#xff0c;可以直接测试 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进…

怎么给苹果手机设备画面投屏到电脑上面?

虽然使用苹果设备自带的AirPlay功能&#xff0c;搭配其推出的Apple TV设备&#xff0c;可实现苹果设备的投屏播放&#xff0c;但相信很多人都不会花大价钱去购入Apple TV&#xff0c;如果是土豪的话请随意。 那么&#xff0c;没有Apple TV&#xff0c;苹果设备就不能投屏了吗&…

sql注入学习-知识点大合集

目录 &#xff08;一&#xff09;sql注入了解&#xff1a; 1.1什么是sql注入 1.2 sql注入的分类 &#xff08;二&#xff09;sql注入详解&#xff1a; 2.1.MySQL注入 2.2.1在MySQL注入中&#xff0c;会用到的知识 2.2.2mysql常用语句与常见 2.2.3msyql注入内容详解 2.2…

首发出炉Yolov5/Yolov7涨点神器:华为诺亚2023极简的神经网络模型 VanillaNet---VanillaBlock助力检测,实现暴力涨点

在​crack缺陷检测项目map 0.954提升至 0.979,涨点明显,博主多个数据集亲测有效,实现暴力涨点; 1.VanillaNet 论文:https://arxiv.org/pdf/2305.12972.pdf 来自华为诺亚、悉尼大学的研究者们提出了一种极简的神经网络模型 VanillaNet,以极简主义的设计为理念,网络中仅仅…

connect reset/timeout/reject 排查

异常排查 问题描述问题处理初步分析http配置即服务整体情况整体排查服务重启gcCPUJVM 暂存疑问点总结启动参数要配全监控体系健全科学使用jar包降配参数是参数得动态变 问题描述 最初出现的时候&#xff0c;是在每天的早上8-10这个时间范围内&#xff0c;服务A上的有一个接口时…

第一行代码 第十二章 Material Design实战

第12章 Material Design实战 其实长久以来&#xff0c;大多数人都认为Android系统的UI并不算美观&#xff0c;至少没有iOS系统的美观。以至于很多IT公司在进行应用界面设计的时候&#xff0c;为了保证双平台的统一性&#xff0c;强制要求Android端的界面风格必须和iOS端一致。…

Java08——继承

1. 继承 父类&#xff1a; package com.zsq.extend.improve_; //是pupil和graduate的父类 public class Student {public String name;public int age;private double score;public void info(){System.out.println("姓名&#xff1a;" name " 年龄&#xff1…

六级备考21天|CET-6|写作技巧2|13:00~14:40

目录 【一】写作技巧1的作业 [1]Creativity [2]谚语&#xff1a;值得做的就值得做得好 [3]Star chasing 追星​ [4]team spirit&communication 团队精神和交流 [5]谚语&#xff1a;理解​ 【二】谚语重要性开头模版 [1]谚语&#xff1a;Understand 理解 【三】社会…

【历史上的今天】4 月 26 日:验证码的发明者诞生;切尔诺贝利病毒爆发;诺基亚收购 Withings

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 4 月 26 日&#xff0c;在 2017 年的今天&#xff0c;中国首艘国产 001A 型航空母舰在大连完成了下水&#xff0c;从开工到下水&#xff0c;历时 3 年多时间。…

5月跳槽进字节跳动测试岗了,面试真简单...

前言: 最近金三银四跳槽季&#xff0c;相信很多小伙伴都在面试找工作&#xff0c; 怎样才能拿到大厂的offer&#xff0c;没有掌握绝对的技术&#xff0c;那么就要不断的学习&#xff0c;没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;…

利用Servlet编写第一个“hello world“

利用Servlet编写第一个"hello world" &#x1f50e;创建 Maven 项目&#x1f50e;引入依赖&#x1f50e;创建目录&#x1f50e;编写代码&#x1f50e;打包代码&#x1f50e;部署&#x1f50e;程序验证&#x1f50e;结尾 &#x1f50e;创建 Maven 项目 Maven 是一个构…

基于yolov5的车辆行人道路检测

一、数据集介绍 本实验使用自动驾驶的公开数据集BDD100K。   数据格式&#xff1a;BDD100K 数据集包含10万段高清视频&#xff0c;每个视频约40秒\720p\30 fps&#xff0c;总时间超过1,100小时。视频序列还包括GPS位置、IMU数据和时间戳&#xff1b;视频带有由手机记录的GPS/…

【刷题之路】LeetCode 1700. 无法吃午餐的学生数量

【刷题之路】LeetCode 1700. 无法吃午餐的学生数量 一、题目描述二、解题1、思路分析2、代码实现2.1、先将队列实现一2.2、代码实现 一、题目描述 原题连接&#xff1a; 1700. 无法吃午餐的学生数量 题目描述&#xff1a; 学校的自助午餐提供圆形和方形的三明治&#xff0c;分…