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

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

例如:

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]

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

相关查询: 离散化 程序设计 复杂度 不可能 情况下
最新查询:中阴经 方正测评 经颅磁刺激 填谷电路 逻辑学导论(第11版) 资本积累 辛厝寮 中华环保世纪行 生产过程 王守仁 罗伯茨 正比例和反比例 海带蒜苔小凉拌 翰林院 商务部 GSM编码 淡绿色 侧孢短芽孢杆菌 甘氨酸 助理工程师 古文字 神户港 超绵吐司 魅力十足 分子细胞遗传学:技术与应用 国际音标 圣莱热教堂 履舄交错 慈诚罗珠堪布 系统管理 毛细血管 审计学 路飞家族 管制员 社会意识 城市桥梁设计规范 海螺湾第三部 死亡通知单之离别曲上 独立核算 纽芬兰渔场 组织者 公益事业 夏威夷州 主导产业 许秀年 牙槽骨 敬谨亲王府 蔡忆慧 米哈伊尔·格里戈里那维奇·叶夫列莫夫 混凝土里的金发女郎 天地八阳神咒经 许宗彦 农村人口 从容不迫 福坪安 颜料黄16 奥村幸大 Excel在财务管理与分析中的应用(第二版) 绿景新美域 旷野独行 反空降 广东道 人口政策 周耒 翡翠鸡米饼 山枣镇 荷花淀派 多刺土甲 分步法 农作物 张瑞图 竹荪炖甲鱼 镇江市广播电视局 人工髋关节置换技术管理规范(2012版) 射击训练 张松桥 在用车 嗜血神灵 燕京大学 离散化
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2025 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.018秒 内存2.83MB