离散化
离散化
离散化本质上可以看成是一种 [哈希],其保证数据在哈希以后仍然保持原来的全/偏序关系。
离散化就是只关心数据的大小之间的关系时候使用的
将其映射成正整数
一般使用情况为数据很大,有负数,有小数
一些算法无法正常运行的时候,就可以用离散化
离散化可以用STL直接完成
十分便捷:
数组下标为0时候的离散化
1 | int C[MAXN]; |
因此已经结束了
数组下标为1的离散化
1 | // a[i] 为初始数组,下标范围为 [1, n] |
如果是vector也是可以直接进行离散化
1 | // std::vector<int> a, b; // b 是 a 的一个副本 |
离散化也不一定要从小到大排序,有时候也需要从大到小。这时在排序和查找时相应地加上greater<int>()
就可以了。
当然也可以用结构体存两个变量,值和下标进行排序后离散化,不过这种大家应该都理解。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Totoroの旅!
评论