今天准备依次把基础的算法整理下,虽然有的不算特别基础,不过在算法中都还算是基础的。计划把这些算法都整理下然后构建出自己的一个大体框架,至少以后遇见简单的算法裸题能够知道一个思考方向,不至于摸不着头脑。今天先把离散化整理下。
离散化
离散化就是将一堆离散分布的数据排列在一起,使其能够存储在数组中。
举个栗子吧,大致就是有一堆数据在-1e9—1e9
直接,给其中某一些数加一个值,然后求一段区间和,这时是不能用前缀和做的,因为数组存不下,这时就可以只考虑用到的数,中间没用到的就忽略掉。
代码实现方式就是先把输入数据存下来,存储所有会用到的数据,然后排序,这时就将这一大数与一堆小的数对应起来了(就是对应的数组下标),想用某一个大数就二分查找这个数组,找到对应的那个小的数。
sort(alls.begin(), alls.end());
alls.erase(unique(alls.begin(), alls.end()), alls.end());
用的时候就二分查找alls
的值即可。