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

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

例如:

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]

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

相关查询: 离散化 程序设计 复杂度 不可能 情况下
最新查询:不辱使命 雅鲁藏布 italiana 汉化组 gazella 推广应用 Antilles оľ macrophage 西欧国家 卓奥友峰 某一地方 Villamil Diemenia 恒定性 铜鼓县国家税务局 占卜者之屋黄永砅回顾展 浙江省杭州市地方税务局 广州南沙珠江三角洲世贸中心大厦 烟台银行业协会 民族问题 Inseparable 宫本娜娜子 水手的三枚硬币 学习离开你 无线串口模块 速拍二维码 新疆建筑业协会 �廪��ѧѧ��(��Ȼ... 第一审 几何学风格 婚姻介绍所 淡水渔业杂志社 通用性 真实性 现行标准 theorem 征服人猿世界 东便门 隆重推出 监狱管理经典案例 Behavior 联合行动 开发计划署 文人墨客 水生微型动物 基底细胞痣综合征 朝鲜王朝实录 电路分析 按钮控制 均衡性 他们的 反相畴界 小规模 电磁振荡 音乐家舞台大型文艺晚会 休斯敦 潜藏在 海水光衰减系数 Autodesk 宇佐见秋彦 生旦净末丑 图谋不轨 可实行 传统上 昌乐信息港 王俊棠 记谱法 到底在 威斯康星冰期 指标体系 建筑设计 人工髋关节置换技术管理规范(2012版) 半自动 张松桥 波兰圣十字工业大学(凯尔采) 正当手段 论黑格尔的中国文化观 段季红 离散化
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2025 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.057秒 内存2.84MB