c++ - 如何对间隔进行二进制搜索

标签 c++ search binary-search

假设我有一组间隔对,例如。 v = {(1,4), (5,10), (11,13), (14,25)}

现在假设我有数字 20,我想拆分 20 对,或者我想删除 (14,25) 对并添加新的两对 - (14,20) 和 (21, 25).我如何在 C++ 中执行此操作,或者仅如何搜索这些间隔并找到其中的间隔是数字 20。

我的想法是创建成对的 vector ,我将在其中保留我的间隔,但我不知道如何分割间隔,而且我必须在对数时间内完成,所以我必须使用二进制搜索。

最佳答案

在这种情况下搜索使用

std::upper_bound() or std::lower_bound()

获取要更改的间隔索引并继续。我在 codeforces 上解决了一个类似的问题,但我只是想告诉索引数字下降的位置。

关于c++ - 如何对间隔进行二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39820603/

相关文章:

c++ - Mat::at<double>(i,j) SIGSEGV,段错误

c++ 对日期进行二分搜索排序 -> 我需要一个范围(cca)

C MPI 数组搜索帮助 (MPI_Scatter)

php - in_array() 是否使用二进制搜索算法?

java - 二分查找递归调用次数?

c++ - 调用函数的可变参数模板

c++ - 对象/结构等的 C++ 内存布局是什么?

c++ - 添加目录路径 Windows 8.1

java - 在 Java 中搜索集合的最快方法

.net - 在 WPF 组合框中查找项目