离散化是程序设计中一个常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中,只考虑需要用的值。离散化可以改进一个低效的算法,甚至实现根本不可能实现的算法。要掌握这个思想,必须从大量的题目中理解此方法的特点。例如,在建造线段树空间不够的情况下,可以考虑离散化。

有些数据本身很大, 自身无法作为数组的下标保存对应的属性。如果这时只是需要这堆数据的相对属性, 那么可以对其进行离散化处理。当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。

例如:

91054与52143的逆序对个数相同。

设有4个数:

1234567、123456789、12345678、123456

排序:123456<1234567<12345678<123456789

=>1<2<3<4

那么这4个数可以表示成:2、4、3、1

思路是:先排序,再删除重复元素,最后就是索引元素离散化后对应的值。

假定待离散化的序列为a[n],b[n]是序列a[n]的一个副本,则对应以上三步为:

sort(sub_a,sub_a+n);

int size=unique(sub_a,sub_a+n)-sub_a;//size为离散化后元素个数

for(i=0;i

a[i]=lower_bound(sub_a,sub_a+size,a[i])-sub_a + 1;//k为b[i]经离散化后对应的值

对于第3步,若离散化后序列为0,1,2,...,size - 1则用lower_bound,从1,2,3,...,size则用upper_bound。其中lower_bound返回第1个不小于b[i]的值的指针,而upper_bound返回第1个大于b[i]的值的指针,当然在这个题中也可以用lower_bound然后再加1得到与upper_bound相同结果,两者都是针对以排好序列。使用STL离散化大大减少了代码量且结构相当清晰。[1]

如果说OIBH问得最多的问题是二分图,那么问得最多的算是离散化了。对于什么是离散化,有各种说法,比如“排序后处理”、“对坐标的近似处理”等。[2]

离散化是程序设计中一个常用的技巧,它可以有效的降低时间和空间复杂度。下面是用来说明如何运用离散化改进一个低效的的算法的三个例子。

相关查询: 离散化 程序设计 复杂度 不可能 情况下
最新查询:咨询会 农林部 御箭连中双兔 天利38套·数学新课标最新五年高考真题汇编详解 在进行 每周二 貌似无盐 塔尔卡 熟皮子 穿越前沿:外国戏剧卷 可动摇 Framework 2013郑源北京演唱会 墨迹 丰特莱的西斯特尔教团修道院 内经针灸类方与临床讲稿 无现金 人大代表履职工作手册 中国人民解放军南京陆军指挥学院 南田画跋 性问题 心高气傲 图为不轨 什科茨扬溶洞 通知单 枢机主教 微分学 宪法修正案 地理环境中元素迁移 谢幕后的醒思 法学界 国家法 不治之症 无论是 黄斑榕 五稜藨草 一夫当关 我的怀抱不够温暖 Colorwork 党组书记 表面粗糙度 无恶不作 代理商 library 代表团成员 Ideology 弹簧门 仿生学 北京城市运行与发展研究中心 我心依旧不变 中国科学技术大学生物科学实验中心 优秀报关员手册(第二辑) 黄州区人力资源和社会保障局 宾夕法尼亚洲 神仙下凡 横行一时 小规模 昌乐信息港 音乐家舞台大型文艺晚会 休斯敦 原榨大豆油 潜藏在 记谱法 Autodesk 社会科学界 威斯康星冰期 可实行 王俊棠 指标体系 建筑设计 中国(安徽)第五届国际茶产业博览会 人工髋关节置换技术管理规范(2012版) 张松桥 半自动 波兰圣十字工业大学(凯尔采) 正当手段 投资回收期法 论黑格尔的中国文化观 段季红 离散化
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2025 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.058秒 内存2.84MB