离散化是指把无限空间中的有限的个体映射到有限的空间中取,以此提高算法的时空效率。
如:1,999,10000000, 15
处理后:1,3,4,2
排序
离散化就是要找出原数据在序列中排第几,因此我们直接先对原数据进行排序:sort(a.begin(),a.end());
去重
但是我们时常再排完序后发现有相同的元素,这样同一数据就会有不同的离散化结果,因此我们还要进行去重操作,我们主要用这个方法:a.erase(unique(a.begin(),a.end()),a.end());
其中unique(a.begin(),a.end());是将重复的元素移到后面并返回一个位置,而erase则是将这个位置到end的元素清除掉。为左闭右开区间。
离散化
在完成前面两个步骤后,我们要确定一个元素离散化后的结果,例如数据为:2 3 3 5 1,则处理后为:1 2 3 5,我们想知道5的离散化结果,则可以利用二分的方法。