离散化 离散化描述: 所存的值域大,但个数小,为了避免空间的浪费,可以使用离散化。 代码模板:12345678910111213141516vector<int> alls; // 存储所有待离散化的值sort(alls.begin(), alls.end()); // 将所有值排序alls.erase(unique(alls.begin(), alls.end()), alls.end()); // 去掉重复元素// 二分求出x对应的离散化的值int find(int x) // 找到第一个大于等于x的位置{ int l = 0, r = alls.size() - 1; while (l < r) { int mid = l + r >> 1; if (alls[mid] >= x) r = mid; else l = mid + 1; } return r + 1; // 映射到1, 2, ...n} 注意: (1)离散后一定要映射到1, 2, 3, … n,故需要在二分查找离散化的值的时候,返回找到的下标 + 1的位置 算法 > 基础算法 #算法 #基础算法 离散化 http://example.com/2023/04/05/基础算法/离散化/ 作者 Feng Tao 发布于 2023年4月5日 更新于 2023年4月21日 许可协议 区间合并 上一篇 位运算 下一篇 Please enable JavaScript to view the comments