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

【优化策略】离散化

概念

离散化是算法设计中处理大数据范围时的关键技巧,它将大范围的数据映射到有较小的的离散空间中,同时保持数据的相对关系。

本质:将原始数据映射到紧凑的连续整数空间

数学表示:建立映射函数 f: ℝ → ℤ,满足 x < y ⇒ f(x) < f(y)

典型场景:

坐标范围极大但数据点稀疏(1e9范围仅1e5个点)

需要构建线段树/树状数组但值域过大

数据值本身无意义而只需保留相对大小关系

实现

//方式一:排序 + 去重 + 二分查找(在disc中依次查找a的每个元素,返回在disc中的下标) 
#include <iostream>
#include <algorithm>
using namespace std; 
const int N = 1e5 + 10;
int a[N],n;
int disc[N],pos;//二分找x,返回下标 
int binary_search(int x)
{int left = 1,right = pos;	while(left < right){int mid = (left + right) / 2;if(disc[mid] >= x) right = mid;else left = mid + 1;`}return left
}int main() 
{cin >> n;for(int i=1;i<=n;i++) {cin >> a[i];disc[++pos] = a[i]; //pos在这里起到枚举下标的作用 }sort(disc+1,disc+pos+1); //默认排升序pos = unique(disc+1,disc+pos+1) - (disc+1); //给元素去重 pos在这里接收去重后元素的个数 for(int i=1;i<=n;i++){	printf("%d离散化后的值为%d\n",a[i],binary_search(a[i]));} return 0;
}
//方式二:排序 + 哈希表去重并且记录离散化后的值 
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std; 
const int N = 1e5 + 10;
int a[N],n;
int disc[N],pos;
unordered_map<int,int> mp;int main() 
{cin >> n;for(int i=1;i<=n;i++) {cin >> a[i];disc[++pos] = a[i]; }sort(disc+1,disc+pos+1); //默认排升序int cnt = 0;for(int i=1;i<=pos;i++){int x = disc[i];if(mp.count(x)) continue;mp[x] = ++cnt; //哈希表中储存的是 disc中的各个元素 及其 从小到大分别是第几号 }for(int i=1;i<=n;i++){	printf("%d离散化后的值为%d\n",a[i],mp[a[i]]);} return 0;
}

相关文章:

  • 项目改 pnpm 并使用 Monorepo 发布至 npm 上
  • Python----神经网络(《Going deeper with convolutions》论文解读和GoogLeNet网络)
  • gitignore的相关用法
  • 51单片机快速成长路径
  • Spring MVC中Controller是如何把数据传递给View的?
  • 2025ISCC练武校级赛部分题解WP
  • (1-1)Java的JDK、JRE、JVM三者间的关系
  • 可视化魔法指南
  • 如何检查 Watchtower 是否正常工作及更新未生效的排查方法【日常排错】
  • C语言学习之字符函数和字符串函数
  • 2025年五一假期旅游市场新趋势:理性消费、多元场景与科技赋能
  • C#管道通讯及传输信息丢失的原因
  • 信息革命对经济、货币体系及权力结构的颠覆性影响
  • 深入了解linux系统—— 进程控制
  • 虚拟现实(VR)与增强现实(AR)在教育领域的应用:开启沉浸式学习新时代
  • 006 yum和Linux生态
  • 可执行文件格式(ELF格式)以及进程地址空间第二讲【Linux操作系统】
  • 精益数据分析(46/126):深入剖析用户生成内容(UGC)商业模式
  • 各地级市儒家学校、学堂、孔庙数据
  • sizeof 和 strlen 的区别
  • 快评|印巴为何停火?已达成“一场胜利,各自表述”的效果
  • 习近平会见委内瑞拉总统马杜罗
  • 梵蒂冈选出新教皇,外交部:望新教皇推动中梵关系不断改善
  • 洲际酒店:今年第一季度全球酒店平均客房收入同比增长3.3%
  • 巴基斯坦称约50名印度士兵在克什米尔实控线丧生
  • 青岛双星名人集团管理权之争:公司迁址,管理层更迭