离散化算法

 离散化算法的思想是将一组连续的数据映射到一组离散的取值,通常是整数。它的主要目的是将连续的数据转换为离散的数据,以便进行统计、计数、排序等操作。

 

 C++代码实现:
 

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;const int N = 300000;
int n, m;
int a[N]; // 存储每个离散化后的值对应的增量
int s[N]; // 存储前缀和数组
vector<int> alls; // 存储所有需要离散化的值
vector<pair<int,int>> add, query; // 存储输入的add和query数组// 二分查找函数,用于找到x在alls中的位置
int find(int x){int l = 0; // 左边界int r = alls.size() - 1; // 右边界while(l < r){int mid = l + r >> 1; // 计算中间位置if(alls[mid] >= x){ // 如果中间位置的值大于等于xr = mid; // 更新右边界}else{l = mid + 1; // 更新左边界}}return r + 1; // 返回x在alls中的位置
}int main(){// 读取n和m的值cin >> n >> m;// 读取add数组的值for(int i = 0; i < n; i++){int x, c;cin >> x >> c;add.push_back({x, c}); // 将x和c作为一对加入add数组alls.push_back(x); // 将x加入alls数组}// 读取query数组的值for(int i = 0; i < m; i++){int l, r;cin >> l >> r;query.push_back({l, r}); // 将l和r作为一对加入query数组alls.push_back(l); // 将l加入alls数组alls.push_back(r); // 将r加入alls数组}// 对alls进行排序并去重sort(alls.begin(), alls.end()); // 对alls数组进行升序排序alls.erase(unique(alls.begin(), alls.end()), alls.end()); // 去除alls数组中的重复元素// 根据add数组更新a数组for(auto item : add){int x = find(item.first); // 找到item.first在alls中的位置a[x] += item.second; // 将item.second加到a[x]上}// 计算前缀和数组sfor(int i = 1; i <= alls.size(); i++){s[i] = s[i - 1] + a[i]; // 计算前缀和}// 根据query数组输出结果for(auto item : query){int l = find(item.first); // 找到item.first在alls中的位置int r = find(item.second); // 找到item.second在alls中的位置cout << s[r] - s[l - 1] << endl; // 输出结果}return 0;
}

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

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

相关文章

数据库事物复习

事务 比如说将张三的银行账户拿出一千给李四&#xff0c;首先需要查询张三的账户余额&#xff0c;扣除1000&#xff0c;然后如果给李四加上1000的过程中出现异常会回滚事务&#xff0c;临时修改的数据会回复回去。 -- 1. 查询张三账户余额 select * from account where name …

如何用GPT进行成像光谱遥感数据处理?

第一&#xff1a;遥感科学 从摄影侦察到卫星图像 遥感的基本原理 遥感的典型应用 第二&#xff1a;ChatGPT ChatGPT可以做什么&#xff1f; ChatGPT演示使用 ChatGPT的未来 第三&#xff1a;prompt 提示词 Prompt技巧&#xff08;大几岁&#xff09; 最好的原则和策…

已解决org.springframework.web.HttpSessionRequiredException异常的正确解决方法,亲测有效!!!

已解决org.springframework.web.HttpSessionRequiredException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录 问题分析 报错原因 解决思路 解决方法 步骤一&#xff1a;检查Session状态 步骤二&#xff1a;确保属性名正确 步骤…

洛谷P8772 [蓝桥杯 2022 省 A] 求和(前缀和差分)

#include <stdio.h> #include<stdlib.h> int main() {int n;scanf("%d", &n);// 读取数组 aint* a (int*)malloc(n * sizeof(int));for (int i 0; i < n; i) {scanf("%d", &a[i]);}// 计算前缀和数组 prefix_sumlong long *prefi…

Windows下面使用C# 获取记事本里面的文本内容并返回数据

C#中平常我们用到最多的读取文件的方法是通过System.IO里面提供的类来操作文件,这里就不再赘述,今天我们用另外一种特殊的方式来取指定文件能用记事本打开的的文件内容。原理大概是用windows底层提供的函数去读取记事本里面的内容。大概流程如下:程序启动记事本进程并打开指…

unity学习(30)——跳转到角色选择界面(跳转新场景)

1.在scene文件夹中&#xff08;[siːn]&#xff09;&#xff0c;右键->create->scene&#xff0c;名字叫SelectMenu&#xff08;选择角色场景&#xff09;。 2.把新建场景拖拽到hierarchy[ˈhaɪərɑːki]中。 3.此时才能在file->build setting中Add open scene&…

【Docker快速入门】Docker部署MySQL

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

Kotlin filterIsInstance filterNotNull forEach

Kotlin filterIsInstance filterNotNull forEach fun main(args: Array<String>) {val i1 MyItem(1, 1)val i2: MyItem? nullval i3: Int 3val i4 "4"val i5 nullval i6 MyItem(6, 6)val list mutableListOf<Any?>(i1, i2, i3, i4, i5, i6)lis…

SpringBoot-2.7.6基于SLF4J日志门面的日志框架切换

SpringBoot 没有强制性的日志记录依赖项,但 Commons Logging API 除外,它通常由 Spring Framework 的模块提供。 要使用 Logback,您需要将其包含在类路径中。 推荐的方法是您只需要通过启动器,这都取决于 . 对于 Web 应用程序 ,因为它可传递地依赖于日志记录启动器。 如果…

【MySQL】数据库概述

目录 一、为什么使用数据库&#xff1f; 二、数据库与数据库管理系统 2.1 相关概念 2.2 两者关系 三、 MySQL介绍 四、 RDBMS和非RDBMS 4.1 关系型数据库&#xff08;RDBMS&#xff09; 4.2 非关系型数据库&#xff08;非RDBMS&#xff09; 五、关系型数据库设计规则 …

YOLOv9 | 利用YOLOv9训练自己的数据集 -> 推理、验证(源码解读 + 手撕结构图)

一、本文介绍 本文给大家带来的是全新的SOTA模型YOLOv9的基础使用教程&#xff0c;需要注意的是YOLOv9发布时间为2024年2月21日&#xff0c;截至最近的日期也没有过去几天&#xff0c;从其实验结果上来看&#xff0c;其效果无论是精度和参数量都要大于过去的一些实时检测模型&…

必看2024年注册阿里云新用户可享受的优惠大合集

阿里云新用户优惠活动价格很便宜&#xff0c;先注册阿里云账号&#xff0c;然后完成 账号完成实名认证 阿里云新用户优惠活动和价格表来了2024阿里云服务器优惠活动政策整理&#xff0c;轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元…

C#与VisionPro联合开发——跳转页面

1、跳转页面并打开相机 From1 所有代码展示 using System; using System.IO; using System.Windows.Forms; //引入VisionPro命名空间 using Cognex.VisionPro;namespace ConnectCamera {public partial class Form1 : Form {public Form1() {InitializeComponent();}CogAcqFif…

Java架构师之路二、数据库:SQL语言、关系型数据库、非关系型数据库、数据一致性、事务管理等。

目录 SQL语言&#xff1a; 关系型数据库&#xff1a; 非关系型数据库&#xff1a; 数据一致性&#xff1a; 事务管理&#xff1a; 上篇&#xff1a;Java架构师之路一、Java基础知识&#xff1a;Java语言特性、集合框架、IO流、多线程、反射、注解等基础知识。-CSDN博客 下…

消息中间件之RocketMQ源码分析(十四)

Broker内存映射机制与高效磁盘 RocketMQ在存储涉及中通过内存映射、顺序写文件等方式实现了高吞吐。 RocketMQ的基本数据结构: CommitLog:RocketMQ对存储消息的物理文件的抽象实现&#xff0c;也就是对物理CommitLog文件的具体实现。MappedFile:CommitLog文件在内存中的映射文…

汽车信息安全--S32K3的HSE如何与App Core通信(1)?

目录 1.S32K3 网络安全架构 2. MU的通信流程 2.1 总体描述 2.2 Host 消息类型 2.3 寄存器概述

同等学力申硕-计算机专业-数学基础-历年真题和答案解析

同等学力申请硕士学位考试是比较适合在职人员的提升学位方式&#xff0c;了解过的人应该都知道&#xff0c;现在社会的竞争压力越来越大&#xff0c;为了提高职业生存能力&#xff0c;提升学位在所难免。 为了通过同等学力申请硕士学位考试&#xff0c;对于计算机专业的人来说…

Pandas时间序列数据补全

一、问题 时间序列数据缺失&#xff0c;将其补全。 如下图所示&#xff0c;数据存在缺失秒级的情况 二、方法 1、需要将时间戳字段设置成 df 的索引 2、使用df.resample()方法 (1)上采样&#xff08;将上一条数据作为当前缺失数据&#xff09; resample()中的参数&#x…

Spring、SpringBoot、SpringCloud三者的区别

Spring、Spring Boot 和 Spring Cloud 是构建企业级 Java 应用程序的不同层次的框架和工具。下面详细介绍它们之间的区别&#xff1a; 1. Spring框架&#xff1a; 概述&#xff1a; Spring 是一个全功能的企业级 Java 框架&#xff0c;提供了依赖注入、面向切面编程、事务管理…

*MYSQL--索引*

一:介绍 在MYSQL当中,索引的使用类似于书当中目录的作用,索引的使用能够让查询更加的迅速,比方说搜索mysql这个单词的时候,可以先从首字母为m开头的字母进行查找,这样就大大减少了搜索的时间,而不是从头到尾进行搜索,提高查询的速度 二:类型 主要分为两大类,一种是根据底层的结…